我有几个表:companycustomercompany_has_customertransaction

company_has_customer是使用companycustomer的PK作为其PK的多对多连接表。

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

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

我认为,对于参照完整性,最好通过company_has_customer发送这些FK,以确保仅在公司与客户之间存在关系时才插入transaction记录。有什么标准或约定可以支持我的直觉吗?

最佳答案

这是如何思考问题的方法。交易与公司和客户是否有单独的关系?还是该交易永远永远只针对公司/客户关系?

我想第一个是这样。

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

如果引用company_has_customer表,则该关系可能会消失。实际上,您可能希望关系在事务发生时保持不变,因此请使用两个外键关系。

关于mysql - MySQL连接表外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25817289/

10-11 02:49
查看更多