2017-05-27 95 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

相關問題