假设我有三张 table 。
MenuItem(MenuItemID{PK}, MenuItemName, MenuItemIngredient)
Ingredient(IngredientID{PK}, IngredientName, SupplierID)
Supplier(SupplierID{PK}, SupplierName)
MenuItem 表中的每个 MenuItem 可以有多种成分。 成分表中的每个成分可以有多个供应商。
我目前的做法是有两个额外的表。
MenuIngredientLink(MenuItemID{PK}, IngredientID{FK})
IngredientSupplierLink(IngredientID{PK}, SupplierID{FK})
然后删除 MenuItem 和 Ingredient 表上的最后一列。
但这似乎并不是一个好方法。
还有其他选择吗?
对 SQL 相当陌生,因此我们将不胜感激。
使用 Microsoft SQL Server 2014。
最佳答案
由于一切都遵循严格的一对多关系
,因此您最初解决问题的方法是正确的。因此无需引入两个映射表。
但是,在这样的场景中就会出现问题。一种成分由许多供应商提供,而一个供应商提供多种成分,从而创建多对多关系。
那么映射表的方法就是首选解决方案。
我提供了一个外部来源供您引用。希望这会有所帮助。
关于sql - 如何设置具有不同数量的特定类型外键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46884000/