Database-Design
多個 0,1 到多個關係的最佳實踐
我是一名沒有大量數據庫設計經驗的應用程序開發人員,我想知道是否有人可以建議將一個表與一個或多個其他表相關聯的設計/實現。
例如,如果我有Account、Policy和Claim表,每個表可能有 0 個或多個Contacts。
我可以在Contacts表中定義多個外鍵欄位,但必須有更好的方法。
IE
varchar(50) contact_name varchar(100) contact_address bigint Account_ID bigint Policy_ID bigint Claim_ID
這實際上取決於許多因素,首先是您選擇的 RDBMS,然後是您的應用程序語言和框架。如果您使用某種形式的 RAILS 和 mysql(數據庫設計由應用程序中的類設計驅動),與 PHP 和 PostgreSQL(您可以選擇使用創建 CONTACT 複合類型並將聯繫人保持為每個數據庫的列中的聯繫人數組,沒有單獨的表)。
在這種情況下,您對關係的陳述幾乎決定了設計。
Each account may have zero, one or many contacts.
這是通過交集表實現的。
create table AccountsContacts( AccountID int not null, ContactID int not null, constraint PK_AccountsContacts( AccountID, ContactID ), constraint FK_AccountsContacts_Account foreign key( AccountID ) references Accounts( ID ), constraint FK_AccountsContacts_Contact foreign key( ContactID ) references Contacts( ID ) );
相同的過程用於保單和索賠。