Как спроектировать такую базу

Всем привет. Прошу вашей помощи. Есть такое задание. Спроектировать базу с рецептами, которая будет использоваться по такому принципу. Пользователь вводит(выбирает): время готовки, ингредиенты, тип блюда(первое, гарнир, салат и т.п.). Запрос должен вернуть рецепт по этим параметрам и только! по этим. Например, если в ингредиентах выбраны куриное мясо и яйца, то вернуть только рецепты с этими продуктами, а не куриное мясо, яйца и грибы. Пока склоняюсь в модели m2m. Не могу придумать, как сделать так, чтобы в ответе не было рецептов с доп.ингредиентами.

Хочу услышать ваше мнение о выборе модели реализации, либо другое решение. Извините, за столь сумбурное орисание.


Ответы (1 шт):

Автор решения: Aziz Umarov

Посмотрите на следующую схему может поможет.

Dish (id, name, description) - блюда

DishRiceipt (id, dishId, name, totalTime, ..) - рецепты
DishRiceiptStep (id, dishRiceiptId, name, time, ..) - шаги
Step(id, name, description) - тут конечно можно и дальше расширяться

DishIngredient(id, dishId, ingredientId) - ингредиенты блюда
Ingredient(id, name) - сюда можно добавить dishId на случай если ингредиент другое независимое блюдо. 
→ Ссылка