0

我使用 MySQL Workbench 中的 Forward Engineer 工具根据我输入的表生成数据库。我能够为围绕游戏 Stardew Valley 构建的数据库填充我的表,例如“村民”、“鱼”和“项目”。但是,当我在 ER 图中链接表时,它会根据关系创建新表,例如 Cooking_Has_Fish,因为许多鱼可用于许多食谱,许多食谱可以使用许多鱼。但是,一旦我填充了 Cooking 和 Fish 表,生成的 Cooking_Has_Fish 表中没有任何内容。我试图了解此表的功能或如何使用它,或者是否需要填充它而我错过了一些东西。

谢谢阅读。

4

1 回答 1

1

没有任何表会自行填充,您需要确保它被填充。为多对多关系创建的第三个表称为关联表或联结表,并且至少包含它们连接的 2 个表的主键。

如果您有一个recipe_id识别recipies 和一个fish_id识别fishes,那么Cooking_Has_Fish表将至少有一个recipe_id和一个fish_id字段。

如果您想将fish and chips(with recipe_id1) 与cod( fish_idbeing 2) 相关联,那么您将执行以下插入:

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

这意味着“鱼和薯条”需要鳕鱼。您可以在关联表中添加其他字段,例如鱼和薯条需要多少鳕鱼。

总之:您必须根据您希望如何关联具有多对多关系的实体(表)来填充关联表。

于 2017-04-19T16:48:12.450 回答