2017-04-19 158 views
0

我使用MySQL Workbench中的Forward Engineer工具來根據我輸入的表生成數據庫。我能夠爲我在Stardew Valley遊戲周圍建立的數據庫填充我的表格,例如「村民」,「魚」和「項目」。但是,當我在ER圖中鏈接表格時,它會根據關係創建新表格,如Cooking_Has_Fish,因爲許多魚類可以用於許多食譜,許多食譜可以使用許多魚類。但是,一旦我填充了Cooking和Fish表格,生成的Cooking_Has_Fish表格中就沒有任何內容。我試圖瞭解這個表是如何工作的,或者如何使用它,或者如果它需要填充,我錯過了一些東西。MySQL Workbench Forward Engineer關係表

感謝您的閱讀。

回答

1

沒有表格自己填充,您需要確保它被填充。爲多對多關係創建的第三個表稱爲associative or junction table,並且至少包含它們加入的兩個表的主鍵。

如果你有recipe_id識別recipies和fish_id識別纔對,然後Cooking_Has_Fish表將至少有一個recipe_idfish_id場。

如果要關聯fish and chips(與recipe_id 1)codfish_id爲2),那麼你會做以下插入:

insert into Cooking_Has_Fish (`recipe_id`, `fish_id`) values (1,2) 

這意味着鱈魚是必需的「魚和薯條」。您可以在關聯表中添加其他字段,例如魚和薯片需要多少鱈魚。

總結:您必須根據您希望如何關聯具有多對多彼此關係的實體(表格)來填充關聯表。

+0

嘿,謝謝你的解釋。這就說得通了。所以如果關聯表只有id值,最好添加更多的字段,比如與id關聯的名字?我在想,如果我只用ID填充該表,那麼它將不會很有幫助。 – Babeeshka

+1

不,您不應該添加名稱,這些名稱存儲在主表中,並且可以通過連接檢索。在進行任何進一步操作之前,可能應該閱讀關於關係數據庫設計的一些書籍/教程,因爲顯然你缺乏基本知識。這沒有錯,我們都在那裏。但是,如果您嘗試在沒有基礎知識的情況下跳躍前進,那麼您只會將數據庫弄糟。 – Shadow