Если вы пытаетесь сделать доменное проектирование, не начинайте с таблиц. Разработайте сначала концептуальную модель, которая отражает ваш основной домен. Я согласен с ndp: RecipeIngredient - это немного неловкое имя / концепция с точки зрения DDD.
Я думаю, что модель нуждается в следующих понятиях: рецепт, ингредиент, мера и подготовка рецепта.
Рецепт - это совокупность ингредиентов. Каждому Ингредиенту, принадлежащему к Рецепту, необходима Мера, связанная с ним, как спецификация для приготовления. Также вам нужно смоделировать RecipePreperation, чтобы связать фактическое количество каждого ингредиента, используемого во время определенной подготовки рецепта.
Мера состоит из единицы и количества (например, 2 чашки, 0,5 унции, 250 г, 2 столовые ложки ...).
Я вижу здесь две разные вещи, которые могут быть смешаны во время анализа и должны быть разделены: рецепт / ингредиент / мера в качестве спецификации для приготовления чего-либо (один экземпляр для каждого рецепта) и рецепт приготовления / ингредиент / мера в качестве конкретного подготовка одного рецепта, сделанного конкретным человеком в определенный момент, и может быть применена другая мера (все ингредиенты удвоены, потому что спецификация рецепта для двух тарелок и у вас четыре гостя ... что-то в этом роде).
Вы можете пойти глубже и начать моделировать такие вещи, как некоторые ингредиенты, имеющие набор заменяемых ингредиентов (например, если у вас нет козьего сыра, используйте моцареллу), поваренная книга, в которой собраны наборы рецептов той же категории, время приготовления за рецепт и пр.