构建配方数据库

时间:2010-10-27 03:04:17

标签: mysql sql database search database-design

我正在建立一个按成分搜索食谱的数据库。

例如,我认为我计划用可接受的成分类型填充数据库,但我不想解析包含特定配方中所有成分的字符串。我正在考虑制作一个可接受的成分表列表,并以某种方式搜索它以查看它是否存在。我觉得这将是一个非常繁重的操作,我希望它尽可能高效。

构建这样的东西的最佳方法是什么?我有几个想法,但它们似乎效率低下。

如果有人在寻找配有黄油,蘑菇和菠菜的食谱,我希望它能够将含有这些成分的食谱归还。

期待听到一些有关此事的建议。

1 个答案:

答案 0 :(得分:10)

这就像关系数据库一样简单......

Table One - Ingredients

[ID]  [Name]  [Description?]
 1     butter   delicious cow output
 2     bread    wholegrain please

Table Two - Recipe Basic Data

[ID]  [RecipeTitle]  [RecipeAuthor]  [RecipeSteps] (maybe as BLOB text?)
 1     Happy Toast    Andrew          butter on bread, then toast bread, etc.    

Table Three - Recipe Needs (many-to-many)

[RecipeID]  [IngredientID]
 1            1               (toast needs butter)
 1            2               (toast needs bread)

这应该让你开始。

编辑 - 示例查询

“所有使用黄油的食谱”

SELECT r.name FROM recipeNeeds n
    LEFT JOIN tableRecipes r
        ON r.ID=n.recipeID
    LEFT JOIN tableIngredients i
        ON i.ID=n.ingredientID
    WHERE i.name='butter'