2017-05-27 56 views
0

我已经创建了这样一个测试场景:错误:外键指的是来自两个不同表的主键

我有三张表,即父亲,孩子,食物。

父表具有主自动增量键和名称列。 子表具有主自动增量键和名称列。 食物有一列我想要一个外键和一列食物名称。

father 
----------- 
id name 
1  kevin 
2  adam 

child 
----------- 
id father_id name 
1  1   fred 
2  1   john 
3  2   alan 

food 
------------ 
person_id    name 
1(from father table)  pizza 
2(from child table)  burger 
1(from child table)  hotdog 

现在食物表有异常。我不能区分(1比萨)是为父亲还是孩子...

测试案例: 从food where where father.id = 1中选择food.name;输出:披萨 从食品中选择food.name,其中child.id = 1;输出:热狗

+0

[外键引用多个表中的主键?](https://stackoverflow.com/questions/668921/foreign-key-referring-to-primary-keys-across-multiple-tables) – philipxy

+0

谷歌我对“数据库子类型”的评论。 (你会看到它与“两个/多个表的外键关联”)(尽管这里实际上并没有FK)。事实上,如果你只是搜索了你的标题或其他明确的问题描述,发现这是一个很多重复的常见问题,例如[this answer](https://stackoverflow.com/a/26093733/3404097)。 – philipxy

回答

1

我相信设计很糟糕。为什么不创建一个“人”表,填充它并确定一个人是否是儿童或父亲,然后在食物表中使用人员ID?

+0

为父亲和孩子制作两张桌子很重要,但我们可以编辑食物表是还有什么其他的东西可以建议吗? –

+0

你可以在食物表中添加person_type字段,并假设人是父亲还是孩子,当然你需要删除外键或任何外键控制。 'd在我看来,这是一个糟糕的设计。 –

+0

@GhazniAli如果问题很重要,请将其写入问题中(但请用足够的文字说清楚)。 – philipxy

相关问题