构建配方数据库

bob*_*obb 3 mysql sql database search database-design

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

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

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

如果有人在寻找配有黄油,蘑菇和菠菜的食谱,我希望它能够回收含有这些成分的配方.

期待听到一些关于此的建议.

Dre*_*rew 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)
Run Code Online (Sandbox Code Playgroud)

这应该让你开始.

编辑 - 示例查询

"所有使用黄油的食谱"

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'
Run Code Online (Sandbox Code Playgroud)