我想实现食谱数据库。一张桌子应该容纳食物和它的单位,另一张桌子应该拿着菜肴的食谱。但不知怎的,我不知道如何实现它。餐具表中的一个条目包含菜肴的名称和来自ingredents表的几个ID,其中一个因子(双倍)表示该数量的单位。
现在我的问题是,如何让菜条包含几个带有ingredentID和因子的条目?
答案 0 :(得分:5)
我建议你使用3张桌子:
所以每道菜都会有几排:每一个都有一排。
答案 1 :(得分:1)
你至少还需要一张桌子。
dish
-----
dish_id
name
other_things
dish_ingredient
----------------
dish_id
ingredient_id
amount
order?
mixing_instructions?
other_stuff
ingredient
-----------
ingredient_id
other_stuff
答案 2 :(得分:1)
基本上,您可以为此创建三个具有多对多关系的表
所有食谱的列表
CREATE TABLE RecipeList
(
RecipeID INT,
RecipeName VARCHAR(50),
-- .... other fields,
CONSTRAINT tb_pk PRIMARY (RecipeID),
CONSTRAINT tb_uq PRIMARY (RecipeName),
)
所有成分列表
CREATE TABLE IngredientList
(
IngredientID INT,
IngredientName VARCHAR(50),
-- .... other fields,
CONSTRAINT tb_pk1 PRIMARY (IngredientID),
CONSTRAINT tb_uq1 PRIMARY (IngredientName),
)
和另一张表格,其中包含每种食谱的成分
CREATE TABLE IngredientList
(
IngredientID INT,
RecipeName INT,
Amount INT,
Units INT,
InnerAmountInGrams DECIMAL(10,2),
-- .... other fields,
CONSTRAINT tb_pk3 PRIMARY KEY (IngredientID, RecipeName),
CONSTRAINT tb_fk1 FOREIGN KEY (RecipeID)
REFERENCES RecipeList(IngredientID),
CONSTRAINT tb_fk2 FOREIGN KEY (RecipeName)
REFERENCES IngredientList(IngredientID),
)