在發佈此問題之前我做了搜索,沒有發現任何直接相關的東西,所以如果這是重複的,我會道歉。我正在設計一個業務系統,就像任何業務系統一樣,我有一個帶CustomerID PK Identity列的Customers表。在規範化設計中處理主要通信記錄的最佳方法
我正在處理電話號碼/電子郵件地址表,我希望通過這種方式對任何給定的客戶ID可以有多個電話號碼和/或電子郵件地址進行規範化。大多數企業將爲任何一個人的賬戶關聯一個電話號碼並將其稱爲主要電話號碼。這個電話號碼可能是在任何陳述,報告等上顯示的電話號碼。與電子郵件地址相同。
我開始考慮如果我想要通過主要電話和電子郵件地址獲取客戶列表,SELECT查詢將如何工作。顯然,我可以使用Inner Join檢索信息,但我只希望每個CustomerID出現一次,如果一個CustomerID有兩個電話號碼,那麼他們會在列表中顯示兩次。
所以我最初的想法是創建一個名爲CustomerCommunications的表,並存儲電話號碼和電子郵件地址,並在其中添加FlagPrimary列,但這不太合理,因爲如果一條記錄是電話號碼或電子郵件地址。 (很明顯,內容會讓它消失,但從查詢的角度來看,這將是具有挑戰性的)。所以我想爲主要電話和主要電子郵件添加一個CommunicationTypes表和單獨的行。然後在CustomerCommunications表中添加一個名爲CommunicationTypeID的外鍵,這將允許我輕鬆識別哪個是主要電話,哪個是主要電子郵件。但後來我開始考慮其他電話和電子郵件地址記錄的CommunicationTypeID。只是電話和電子郵件?輔助電話和電子郵件?
很明顯,這個問題是主觀的,並受制於自己的設計理念,但基本上我在尋找的是其他人在使用1到多表時想到的想法,但希望能夠輕鬆地單列出一行用於顯示或報告目的。
作爲國旗的主要是好的。爲什麼有人不能有多個電子郵件地址?我做。 – 2011-04-10 01:56:13
我會設置它,以便他們可以輸入多個電子郵件地址,但大多數情況下當您註冊任何類型的網站時,您通常會將它們放在一個電子郵件地址中,這就是他們將如何與您聯繫。 – Jeremie 2011-04-10 02:51:30