我有两个表,假设客户及其联系人。每个客户可以拥有一个默认联系人。哪个解决方案最好使用适当的触发器将boolean isDefault列添加到Contacts表,或者将defaultContactId添加到Customers表?请证实你的答案。
答案 0 :(得分:1)
通过保留客户的外键(即Contacts表中的customerId)并在Customer表中保留defaultContactId来保持客户和联系人之间的双向关系不是一个好主意。这是因为这种关系在关系方面不是双向的。
如上所述,实体之间的关系是一个客户可以拥有多个联系人,即客户和联系人之间的一对多关系,这在Contact表中需要CustomerId外键。现在,其中一个联系人是默认联系人。这是默认情况下Contact的属性/属性。它不是客户的财产。因此,isDefaultContact应该是Contacts表中的一列。
答案 1 :(得分:0)
如果您在isDefault
表格中添加了布尔Contacts
列,那么您还需要在联系人表格中添加另一列CustomerId
。
因此,最好只使用一个外键DefaultContactId
,该外键应该可以作为customers表的空白。
<强>更新强>:
由于您已经有一个外键CustomerId
,因此在Contacts表中添加一个布尔isDefault
列就足够了,不需要另外一个外键,因为您可以找到该客户使用的是谁外键引用CustomerId
。