Структурирование базы данных рецептов - PullRequest
3 голосов
/ 27 октября 2010

Я работаю над созданием базы данных, которая будет искать рецепты по ингредиентам.

Например, я думаю, что планирую заполнить базу данных типами ингредиентов, которые принимаются, но я не хочу разбирать строку, которая включает все ингредиенты в определенном рецепте. Я думал о том, чтобы составить список таблиц приемлемых ингредиентов и как-то обыскивать его, чтобы увидеть, существует он или нет. Я чувствую, что это будет очень сложная операция, и я хочу, чтобы она была максимально эффективной.

Каков наилучший способ структурировать что-то подобное? У меня есть пара идей, но они кажутся просто неэффективными.

Если кто-то ищет рецепты с маслом, грибами и шпинатом, я хочу, чтобы он вернул рецепт с любым из этих ингредиентов.

Будем рады услышать некоторые предложения по этому вопросу.

1 Ответ

10 голосов
/ 27 октября 2010

Это почти так же просто, как получить реляционные базы данных ...

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...