在哪个表中添加isDefault列?

时间:2015-10-13 11:23:52

标签: sql database-design boolean

我有两个表,假设客户及其联系人。每个客户可以拥有一个默认联系人。哪个解决方案最好使用适当的触发器将boolean isDefault列添加到Contacts表,或者将defaultContactId添加到Customers表?请证实你的答案。

2 个答案:

答案 0 :(得分:1)

通过保留客户的外键(即Contacts表中的customerId)并在Customer表中保留defaultContactId来保持客户和联系人之间的双向关系不是一个好主意。这是因为这种关系在关系方面不是双向的。

如上所述,实体之间的关系是一个客户可以拥有多个联系人,即客户和联系人之间的一对多关系,这在Contact表中需要CustomerId外键。现在,其中一个联系人是默认联系人。这是默认情况下Contact的属性/属性。它不是客户的财产。因此,isDefaultContact应该是Contacts表中的一列。

答案 1 :(得分:0)

如果您在isDefault表格中添加了布尔Contacts列,那么您还需要在联系人表格中添加另一列CustomerId

因此,最好只使用一个外键DefaultContactId,该外键应该可以作为customers表的空白。

<强>更新

由于您已经有一个外键CustomerId,因此在Contacts表中添加一个布尔isDefault列就足够了,不需要另外一个外键,因为您可以找到该客户使用的是谁外键引用CustomerId