2011-10-31 210 views
1

業務場景多種類型的客戶:數據庫設計,在同一個表

  • 客戶可以登錄到在線電子商務應用,使用他們的電子郵件地址作爲其登錄信息。

  • 我們有一個CRM應用程序依賴於同一個數據庫。員工使用CRM應用程序添加非在線客戶,並且此處不需要電子郵件字段。

技術上: 在客戶表中沒有什麼「自然」做出PK。無論如何,即使沒有自然的PK,我也總是使用人造PK。我擔心這最終會導致搜索,完整性等方面的問題。但我無法確定究竟會出現什麼問題。

我認爲開發人員不會期望電子郵件列允許爲空,他們將創建忽略這種情況的程序。

請記住整個系統和大部分數據庫都依賴於客戶數據,如果客戶表中出現問題,它可能會被其他表繼承。

兩種類型的客戶在我的大腦中觸發異常,但我無法弄清楚異常的消息。你怎麼看?現在找出一些出路是否更好?或者你認爲,這樣可以,直到出現問題爲止,因爲這不太可能會導致問題,請記住,問題不是由於祕密的問題,它可以是可維護性或發展併發症?

感謝

+0

問題是什麼?爲什麼不能使用簡單的代理鍵(自動遞增)作爲PK? –

+0

那我的意思是通過人工PK – Costa

+0

CRM是一個打包解決方案還是內部開發? – home

回答

1

是否有一個具體的理由在同一個表將這些數據一起? CRM「客戶」和電子商務客戶在此數據庫中共享許多其他表格嗎?

老實說,我不會把電子商務客戶放在這個數據庫中。儘管您可以創建視圖來輕鬆分離電子商務和CRM數據,但這對我來說似乎完全沒有必要。此外,您還沒有描述爲什麼電子商務和CRM數據需要存在於同一個數據庫中的任何特定原因。也許有一個原因,你沒有包括在問題中,但如果你問我,這已經聞起來了。

從我們這裏包含的信息來看,我不認爲你會爲電子商務客戶創建一個單獨的數據庫和表格,從而失去任何重要的東西。將不相關的數據分開。

編輯:

爲了讓體驗更加明確:如果你的電子商務客戶不與CRM客戶共享大量的數據,創建新的客戶表。如果他們分享大量的數據,那麼一個空列可能不是世界的盡頭。

+0

系統已經存在,我沒有參與這個設計。 所以,你同意我的觀點,總有一天會引起一些麻煩,我必須做點什麼,否則你會這樣離開,直到出現問題。 – Costa

+1

新的電子商務客戶是否會與CRM客戶分享大量數據?您在原始問題中沒有提供關於此的詳細信息。 **如果答案是肯定的,那麼我認爲可以將電子商務客戶放在同一張表中 - 空電子郵件列不是世界末日。 **如果答案不是**,那麼您需要考慮創建一個單獨的電子商務數據庫和客戶表。 – jwiscarson

+0

e-Commerece應用程序需要電子商務客戶電子郵件,但客戶關係管理應用程序不需要CRM客戶電子郵件,而且這兩個應用程序幾乎共享所有內容。 因此,我在同一張桌子上,我將有一個設計,並不真正強制電子商務應用程序的完整性....同意? – Costa