2017-04-19 159 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