【发布时间】:2013-01-30 11:56:53
【问题描述】:
我正在设计一个包含食谱及其成分列表的数据库,现在我正在处理将各个成分链接到它们各自的食谱的过程。但是,我在决定如何填充关联实体表的最佳行动方案时遇到了麻烦。
我有 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。
Recipe 表由另一个 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);
【问题讨论】:
标签: mysql many-to-many associative-table