與多個表有關係的表
我想保留人員的聯繫方式。此聯繫方式可以屬於一個
client
或一個next of kin
成員,或任何其他entity
的。我將在 Symfony 項目中使用 Doctrine2,它將處理數據完整性。擁有這樣的
contact
表來儲存任何類型的“父”實體的聯繫人是一個好習慣,或者我應該有不同的表,比如client_contact
&next of kin
?
只要每個人只有一個地址和最多兩個電話號碼(傳真除外),您目前的圖表就很棒。
此架構崩潰的一種簡單方法是,如果您的客戶的位置為街道地址,但其郵寄地址為郵政信箱。這是美國農村社區相當普遍的設置。當我住在懷俄明州傑克遜市時,我的街道地址與我的郵政信箱的郵政編碼不同。此外,我的工作地址在另一個城市。核心點是人們很容易擁有多個地址,這與您的架構衝突。
就個人而言,我會將地址與電話號碼分開。這使您對數據有更多的自由。 實體可以擁有不帶電話號碼的地址和不帶地址的電話號碼,而不會冒著外鍵進入充滿空值的行的風險。此外,我會在地址和電話號碼表中添加一個外鍵,它只是一個描述的連結。這樣你就不需要記住“PhoneNumber2 始終是手機,除非這是一家企業,在這種情況下它是聯繫人的直接線路”或其他類似的廢話。描述表的外鍵將清楚地表明客戶 X 有兩個家庭固定電話,沒有手機。您獲得靈活性和清晰度。
總的來說,我仍然會保留一個地址和一個電話號碼表,各個實體將通過外鍵連結到這些表。 無需複制模式。 請記住,對於某些實體來說,在實體上擁有地址/電話表的外鍵可能是有利的,而其他實體可能會使用連接表。這可以是每個實體的判斷呼叫,可以隨著時間的推移進行調整,而痛苦相對較小。
此外,您可能希望將“next_of_kin”表與某人(您的客戶?)相關聯,因為他們沒有親屬似乎有點奇怪…… :)