我正在设计一个包含食谱及其成分列表的数据库,现在我正在处理将各个成分链接到它们各自的食谱。但是,我无法决定如何填充关联实体表的最佳行动方案。
我有我的 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)
);
成分表由包含 200 多种单独成分的 XML 文件填充,每种成分从 1 开始自动分配不同的 ID。
食谱表由另一个 XML 文件填充,其中包含食谱标题、制备方法和菜肴类型。
recipeIng 表是我遇到的麻烦,我认为它必须手动填充。即手动将所有成分与他们的食谱相匹配。像这样:
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);