我有几个表:company
,customer
,company_has_customer
和transaction
。
company_has_customer
是一个多对多联结表,使用company
和customer
的PK作为其PK。
在整个数据库的几乎所有情况下,company
和customer
都用于标识记录(例如在transaction
表中)。
我的问题是我是否应该在transaction
表中创建指向company_has_customer
或两个表(company
,customer
)的外键?< / p>
我认为参考完整性最好通过company_has_customer
发送这些FK,以确保只有在公司和客户之间存在关系时才插入transaction
条记录。是否有任何标准或惯例来支持我的预感?
答案 0 :(得分:0)
以下是如何思考这个问题。交易是否与公司和客户有单独的关系?或者,该交易是否永远特定于公司/客户关系?
我猜第一个就是这样。
需要考虑的具体情况是:如果客户与公司之间的关系在交易发生后发生变化,会发生什么?交易是保留原始公司还是转换到新公司?或者它是否无效?
如果您引用company_has_customer
表,则关系可能会消失。实际上,您可能希望关系保持与事务发生时的关系一样,因此请选择两个外键关系。