Sql server 如何在SQL数据库中组织有关菜肴的信息?
我将创建一个SQL数据库来存储有关烹饪的信息。将会有菜肴、配料等 问题是如何表示一道菜的信息,以便包含与该菜相关的所有成分 例如,有一个包含以下字段的配料表:Sql server 如何在SQL数据库中组织有关菜肴的信息?,sql-server,data-representation,Sql Server,Data Representation,我将创建一个SQL数据库来存储有关烹饪的信息。将会有菜肴、配料等 问题是如何表示一道菜的信息,以便包含与该菜相关的所有成分 例如,有一个包含以下字段的配料表: -id -ing_名称 -ing_类型 … 等 另一个表包含关于一道菜的信息,例如: -id -菜名 -盘子类型 … -等 必须有所有与diss相关的配料,但数量可能不同,因此我不知道如何将与菜肴相关的配料储存在桌子上 假设id=1的菜肴包含id=3、5、8和12的成分,我如何在关于菜肴的表格中表示这些信息?您刚刚发现了多对多关系 您需要
-id
-ing_名称
-ing_类型
…
等 另一个表包含关于一道菜的信息,例如:
-id
-菜名
-盘子类型
…
-等 必须有所有与diss相关的配料,但数量可能不同,因此我不知道如何将与菜肴相关的配料储存在桌子上
假设id=1的菜肴包含id=3、5、8和12的成分,我如何在关于菜肴的表格中表示这些信息?您刚刚发现了多对多关系 您需要3个表来处理此数据,“菜肴”、“配料”和“配料”。“配料”有时被称为“连接表”。它存储关于其他两个表之间关系的信息 您的表结构将如下所示:
SELECT
Dish.Name AS Dish,
Ingredient.Name AS Ingredient,
DishIngredient.Quantity AS Quantity
FROM Dish
INNER JOIN DishIngredient
ON Dish.DishID = DishIngredient.DishID
INNER JOIN Ingredient
ON DishIngredient.IngredientID = Ingredient.IngredientID
WHERE Dish.Name ='Pizza'
- 盘子
- 碟状
- 名字
- 配料
- 英格里丁
- 名字
- 餐具配料
- 碟状
- 英格里丁
- 数量
Dish.DishID
和component.IngredientID
作为主键,并在Dish component
中使用外键。
dishcomponent
上的主键应该是dishcomponent.DishID和dishcomponent.IngredientID
上的复合键
在dishcomponent
上设置主键并非绝对必需,它可以有自己的ID,但复合主键将防止同一配料多次出现在同一个盘子中
您可以使用联接将这些表连接起来,以获取配方的所有成分,如下所示:
SELECT
Dish.Name AS Dish,
Ingredient.Name AS Ingredient,
DishIngredient.Quantity AS Quantity
FROM Dish
INNER JOIN DishIngredient
ON Dish.DishID = DishIngredient.DishID
INNER JOIN Ingredient
ON DishIngredient.IngredientID = Ingredient.IngredientID
WHERE Dish.Name ='Pizza'
非常感谢,你帮了我很大的忙!