2

レシピのデータベースを実現したい。1 つのテーブルには材料とその単位を保持し、もう 1 つのテーブルには料理のレシピを保持する必要があります。しかし、どういうわけか私はそれを実現する方法がわかりません。料理テーブルの 1 つのエントリには、料理の名前と、その材料の単位数を示す要素 (倍精度) を持つ材料テーブルの複数の ID が保持されます。

私の質問は、料理のこのエントリを取得して、ingredentID と factor を持つ複数のエントリを含めるにはどうすればよいですか?

4

3 に答える 3

5

3 つのテーブルを使用することをお勧めします。

  1. 料理 (料理 ID、名前、その他の一般情報が含まれます)
  2. 成分 (すべての既存の成分のリスト)
  3. Recipiec (3 つの列を持つテーブル: 料理 ID、材料 ID、およびこの材料の数は、現在の料理に使用する必要があります)。

したがって、すべての料理にはいくつかの行があり、材料ごとに 1 つの行があります。

于 2012-12-09T13:59:31.910 に答える
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
于 2012-12-09T14:01:03.837 に答える
1

基本的に、多対多の関係を持つこのために3つのテーブルを作成できます

すべてのレシピのリスト

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 に答える