有没有办法让mysql允许2个外键中的1个为空?

时间:2016-03-16 18:00:40

标签: mysql database-design mysql-workbench

我有一个包含2个外键的表,1个通向个人表,1个通向公司表。

我想设置它以便mysql允许任何1个外键为null但如果两个都为null则无法插入。

如果不是这样,我将在前端强制执行规则。

编辑:这与其他问题的不同之处在于密钥可以是一个或另一个或两者。从我在答案中看到的,他们只是谈论它是一张桌子或另一张桌子而不是两者都是

感谢您的时间

1 个答案:

答案 0 :(得分:0)

不,不要这样做。

你需要更好的抽象。阅读表继承和派对模型。

为个人和组织提供一个表parties和一个type列。将外键指向此表。

您应该阅读http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back/33-Polymorphic_Assocations_Objective_reference_multiple