MySQL连接表外键

时间:2014-09-12 21:42:21

标签: mysql sql database junction-table

我有几个表:companycustomercompany_has_customertransaction

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

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

我的问题是我是否应该在transaction表中创建指向company_has_customer或两个表(companycustomer)的外键?< / p>

我认为参考完整性最好通过company_has_customer发送这些FK,以确保只有在公司和客户之间存在关系时才插入transaction条记录。是否有任何标准或惯例来支持我的预感?

1 个答案:

答案 0 :(得分:0)

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

我猜第一个就是这样。

需要考虑的具体情况是:如果客户与公司之间的关系在交易发生后发生变化,会发生什么?交易是保留原始公司还是转换到新公司?或者它是否无效?

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