2010-05-06 133 views
0

我有一個系統,有兩種類型的用戶(公司和個人)。所有類型都有一組共享屬性,但它們在另一個不同。什麼是最好的設計合併在一張表中允許空值爲不匹配的屬性,或者將它們分成兩個與一對一關係的基本表相關的表中。 謝謝。數據庫設計

+1

使用共享屬性和指向具有唯一屬性的兩個獨立表的鏈接來構建基表。這將遵循我認爲的正常化進程。 – Lazarus 2010-05-06 11:54:22

+0

不同領域的數量是多少? – DForck42 2010-05-07 15:25:20

回答

3

性能方面,這是一個折衷的問題。

從另一個表中選擇屬性將需要額外的JOIN(這對性能不利),但保持主表更小(這對性能有好處)。

JOIN是一個相當昂貴的操作,所以除非你有像這樣的屬性200(這會增加很多表),你最好把它們放在一張表中。

然而,分開表格會使您的CHECKNOT NULL約束變得更加簡單。

3

爲了獲得更好的性能,請爲兩者使用一個表,爲不同屬性允許空值並添加類型屬性。

一對一關係(等同於OO世界中的子類化)將使您的架構更易維護,更易於理解,但會涉及性能問題。選擇你的藥丸。