我有几个表:company
,customer
,company_has_customer
和transaction
。company_has_customer
是使用company
和customer
的PK作为其PK的多对多连接表。
在整个数据库的几乎所有情况下,company
和customer
都用于标识记录(例如,在transaction
表中)。
我的问题是我是否应该在transaction
表中创建外键以分别指向company_has_customer
或两个表(company
,customer
)?
我认为,对于参照完整性,最好通过company_has_customer
发送这些FK,以确保仅在公司与客户之间存在关系时才插入transaction
记录。有什么标准或约定可以支持我的直觉吗?
最佳答案
这是如何思考问题的方法。交易与公司和客户是否有单独的关系?还是该交易永远永远只针对公司/客户关系?
我想第一个是这样。
需要考虑的具体情况是:交易发生后,如果客户与公司之间的关系发生变化,将会发生什么?交易是保留原始公司还是切换到新公司?还是无效?
如果引用company_has_customer
表,则该关系可能会消失。实际上,您可能希望关系在事务发生时保持不变,因此请使用两个外键关系。
关于mysql - MySQL连接表外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25817289/