некоторые мысли:
Возможно, вы захотите использовать одну и ту же таблицу для рецепта и ингредиента со столбцом индикатора типа.Причина в том, что рецепты могут содержать подрецепты.Назовем объединенную таблицу «Товар».Тогда ваша таблица RecipeIngredient будет выглядеть так:
RecipeIngredient (RecipeId, ItemId, Amount).
Я ожидаю, что таблица также будет иметь столбец последовательности.
Если вы хотите выполнить какие-либо вычисления с этими рецептами (например, масштабирование, анализ питания, планирование производства) тогда ваши количества должны будут указать единицу измерения.Вы можете сделать это явно (имея отдельный столбец для uofm) или вы можете использовать текстовое поле для количества и ожидать, что пользователь будет вводить значения, такие как «1 чашка» или «2 столовые ложки».Если вы воспользуетесь этим подходом, вам нужно убедиться, что то, что они вводят, узнаваемо, и анализировать их каждый раз, когда вам нужно их использовать.Это может стать удивительно сложным, особенно если вы хотите представить рецептуру формально.
Предполагая, что вы хотите 1: M от рецепта до категории, я все еще не уверен, почему в вашей таблице RecipeCategory будет столбец Имя.Я думаю, что название происходит от определения категории.
Я согласен с Дейвом, что маловероятно, что вы будете повторно использовать этапы подготовки от рецепта к рецепту, и поэтому таблица RecipePreparationSteps (или что-то подобное) будет более подходящей.
Однако в рецептах часто используются ингредиенты и инструкции.например.
Вступительный текст некоторых ингредиентов.подготовить инструкции еще несколько ингредиентов, выпечки инструкции.
Для этого вам необходимо умело установить значения последовательности в таблицах шагов RecipeIngredient и RecipePreperation, чтобы можно было объединять данные из обоих в надлежащем порядке для представления.Другой подход заключается в том, чтобы вместо этих двух таблиц использовать таблицу «RecipeLine», чтобы каждая строка могла представлять либо инструкцию, либо компонент.Я думаю, что это может быть то, что вы предлагали.Пуристы нахмурились бы за такую перегрузку стола, но я не пурист.
Это тема, о которой я много знаю, так что спросите что-нибудь.