SQL表,包含指向另一个表中的行的链接

时间:2012-12-09 13:55:14

标签: php mysql sql database

我想实现食谱数据库。一张桌子应该容纳食物和它的单位,另一张桌子应该拿着菜肴的食谱。但不知怎的,我不知道如何实现它。餐具表中的一个条目包含菜肴的名称和来自ingredents表的几个ID,其中一个因子(双倍)表示该数量的单位。

现在我的问题是,如何让菜条包含几个带有ingredentID和因子的条目?

3 个答案:

答案 0 :(得分:5)

我建议你使用3张桌子:

  1. 菜肴(包含菜肴ID,名称和一些一般信息)
  2. Ingredents(所有现有成员的名单)
  3. Recipiec(有3列的表格:菜肴id,ingredent id和这个ingredent的数量应该用于当前菜肴。)
  4. 所以每道菜都会有几排:每一个都有一排。

答案 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),
)