レシピとその材料のリストを含むデータベースを設計しており、現在、個々の材料をそれぞれのレシピにリンクする処理を行っています。しかし、連想エンティティ テーブルを作成する方法について、最善の方法を決定するのに苦労しています。
私は3つのテーブルを持っています、
CREATE TABLE Ingredient
(
ingredientID int PRIMARY KEY AUTO_INCREMENT,
ING VARCHAR(100)
);
CREATE TABLE Recipe
(
recipeID int PRIMARY KEY AUTO_INCREMENT,
recipeTitle VARCHAR(200),
prepText VARCHAR(10000),
cuisineType VARCHAR(100)
);
CREATE TABLE recipeIng
(
recipeID int,
ingredientID int,
PRIMARY KEY (recipeID, ingredientID)
);
Ingredient テーブルは、200 以上の個々の成分を含む XML ファイルから入力され、各成分には 1 から始まる異なる ID が自動的に割り当てられます。
Recipe テーブルには、レシピのタイトル、調理方法、料理の種類を含む別の XML ファイルが入力されます。
レシピテーブルは私が問題を抱えているものです。手動で入力する必要があると思います。つまり、すべての材料を手動でレシピに合わせます。このような:
INSERT INTO recipeIng
VALUES(1, 1);
INSERT INTO recipeIng
VALUES(1, 2);
INSERT INTO recipeIng
VALUES(1,3);
INSERT INTO recipeIng
VALUES(1, 4);
「1」は最初のレシピの ID で、「1」、「2」などは個々の材料 ID です。
ただし、これがテーブルを作成するための最良のアプローチであるかどうかはわかりません。アドバイスがあれば役立ちます。
注:このクエリを入力する使用中の方法と組み合わせると、正常に機能します。
SELECT r.recipeTitle
FROM Recipe r
INNER JOIN recipeIng e ON e.recipeID=r.recipeID
INNER JOIN Ingredient i ON i.ingredientID = e.ingredientID
WHERE 'brown sugar' IN (i.ING);