1

我有几个表:companycustomercompany_has_customertransaction

company_has_customer是一个多对多联结表,使用companycustomer作为其 PK。

在整个数据库的几乎所有情况下,companycustomer都用于标识一条记录(例如在transaction表中)。

我的问题是我是否应该在transaction表中创建外键以分别指向company_has_customer或指向两个表(company, customer)?

我认为,最好将这些 FK 发送到参照完整性,company_has_customer以确保transaction仅在公司与客户之间存在关系时才插入记录。是否有任何标准或约定来支持我的预感?

4

1 回答 1

0

这是思考问题的方法。交易是否与公司和客户有单独的关系?或者,交易是否永远特定于公司/客户关系?

我猜第一个就是这种情况。

具体要考虑的情况是:如果交易发生后客户和公司之间的关系发生了变化怎么办?交易是保留原公司还是切换到新公司?还是失效了?

如果您引用该company_has_customer表,则关系可能会消失。事实上,您可能希望关系保持在事务发生时的状态,因此选择两个外键关系。

于 2014-09-12T22:33:43.790 回答