2010-05-06 131 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世界中的子类化)将使您的架构更易维护,更易于理解,但会涉及性能问题。选择你的药丸。