我對錶格的正確設計有疑問。比方說,我有一張名爲漢堡包的表,這個漢堡可以有很多調味品,比如奶酪,番茄醬等。我想把這些信息放在一組表格中。每種調味品必須放在自己的桌子上,因爲每種調味品都有不同的列。多表格的數據庫設計
以下是我有:
漢堡 - (ham_id,標題等)
ham_condiments(ham_id,condiment_id,parent_condiment_id,condiment_type)
奶酪(cheese_id,姓名,奶酪具體列)
肉(meat_id,名稱,一些牛肉特定的列)
梅奧(mayo_id,名稱,一些特定的蛋黃醬列)
因此,ham_condiments顯示的是漢堡表中的一對多,而且在ham_condiments表的condiment_id列中使用了mayo_id,meat_id和cheese_id。
所有這些的原因是parent_condiment_id會顯示漢堡包中調味品的正確順序。
所以,如果你想看到所有的佐料上一個漢堡包,你會:
select ham.title, c.name, m.name, mo.name, condiment_type
hamburger ham,
ham_condiments hc,
cheese c,
meat m,
mayo mo
where
ham.ham_id = hc.ham_id and
hc.condiment_id = c.cheese_id and
hc.condiment_id = m.meat_id and
hc.condiment_id = mo.mayo_id
order by hc.parent_condiment_id
(parent_condiment_id可能只是用1,2,3,4開始以及值的排序順序列)
我只是想過這裏嗎?我基本上增加了另一張桌子,以保持漢堡包內調味品的順序,但我很難將它們放在一起。謝謝你的幫助。
感謝您的快速響應。你是對的,parent_condiment_id應該只是調味品。我正試圖將太多的東西推到子表上,你又是對的。我只需要將flow_condiments表格作爲主調用來爲每個調味品細節保存具有子表格的調味品的基本信息。再次感謝菲利普。 – EricW