假設我有一個實體CLIENT,它可以是PERSON或ORGANIZATION。根據哪種類型,我必須選擇屬性(地址,組織名稱,日期,生日,姓氏,姓氏)。我已經創建了所有三個實體,但是如何才能使這些屬性依賴於類型?SQL屬性取決於類型
看Database design: objects with different attributes,沒有幫助......
假設我有一個實體CLIENT,它可以是PERSON或ORGANIZATION。根據哪種類型,我必須選擇屬性(地址,組織名稱,日期,生日,姓氏,姓氏)。我已經創建了所有三個實體,但是如何才能使這些屬性依賴於類型?SQL屬性取決於類型
看Database design: objects with different attributes,沒有幫助......
一個典型的選擇是1:1
擴展表:
create table client (id int primary key);
create table person (id int foreign key references client(id), ...columns...);
create table organization (id int foreign key references client(id), ...columns...);
然而,我的首選是包含在client
表中的所有列。您可以有一個類型爲person
或organization
的列。與行類型不相關的列可以爲空。這樣你的查詢就會簡單得多。
要麼使用3個表,要麼使用1個表,並將不需要的列留空。哪種設計優越取決於用例。只使用1個表提供了更簡單的查詢,但需要更改每個新子類的表。使用多個表格可以輕鬆添加更多類型,但可以提供更復雜的查詢。我懷疑我只會從1張桌子開始,但你的里程可能會有所不同。明白了!
瞭解!謝謝=) – petajamaja
我實際上正在寫一個房租的數據庫。在這種情況下,組織或人員不僅可以是客戶,也可以是房間提供者。所以在這種情況下,我必須有兩個參考? – petajamaja