请检查下面的表格对我的问题的一个简化版本:字段引用两个表 - 外键冲突
表男孩
BoyId
BoyName
...
表女孩
GirlId
GirlName
桌上玩具
ToyId
ToyName
ToyOwnerBoyOrGirl (The toy could be owned by a boy or a girl)
ToyOwnerId
我创建了两个约束:
1)ToyOwnerId
是主键Boys.BoyId
2)ToyOwnerId
一个外键的主键Girls.GirlId
我的目的外键是告诉数据库,ToyOwnerId
将永远是这些ID中的一个
我的问题: 当我尝试插入一个带有男孩ID的新玩具时,我得到了一个错误,在Girls约束中有一个foreign key conflict
。
这是一个包的设计,或者我仍然可以使用相同的设计与修复?
您不能创建引用两个表的外键,没有数据库允许这样做。你将不得不改变你的模式(你说过你不能/不会),或者没有参考而生活。还要注意,如果你问“这是一个糟糕的设计”,而当答案是“是的,这是糟糕的设计”你的回答是“好的,但我不能改变它”,那么也许你不问正确的问题。 – 2014-11-25 14:51:37
我还没说过我根本不能改变模式。我只在我的评论中提到,对两个实体使用单个表是不可能的。 – user3340627 2014-11-25 14:57:06