2

我想实现一个食谱数据库。一张桌子应该存放配料及其单位,另一张桌子应该存放菜肴的食谱。但不知何故,我不知道如何实现它。菜肴表中的一个条目包含菜肴的名称和成分表中的几个 id,其中一个因子(双)表示该成分的多少单位。

现在我的问题是,我怎样才能让一道菜的这个条目包含几个带有 ingredentID 和因子的条目?

4

3 回答 3

5

我建议你使用 3 个表:

  1. 菜肴(包含菜肴 ID、名称和一些一般信息)
  2. 成分(所有现有成分的列表)
  3. Recipiec(包含 3 列的表:菜 id、成分 id 和此成分的编号应用于当前菜)。

所以每道菜都会有几行:每种成分一行。

于 2012-12-09T13:59:31.910 回答
1

你至少需要一张桌子。

dish
-----
dish_id
name
other_things

dish_ingredient
----------------
dish_id
ingredient_id
amount
order?
mixing_instructions?
other_stuff

ingredient
-----------
ingredient_id
other_stuff
于 2012-12-09T14:01:03.837 回答
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),
)
于 2012-12-09T14:07:27.290 回答