0

私はスナックバー自動化システムを設計しようとしています (最初の質問に答えるために-いいえ、それは宿題ではなく、学習目的です)、レシピとそれらをデータベースに表示する方法に問題があります. 2 つのオプションがあります。

オプション1:

[Ingredients] -> [IngrID, IngrName]
[Recipe] -> [RecipeID, RecipeName]
[IngRecipe] -> [IngrID, RecipeID]

この場合、3 番目のテーブルは典型的な多対多テーブルで、モデルは正しく見え、Entity Framework を使用してデータを操作するのは簡単です。しかし、金額も把握したい。通常、私は Ingredients をテーブルとして使用して、新しい購入品を挿入します。成分が存在する場合は、量を更新するだけです。

オプション 2

列「金額」を列として IngRecipe に追加すると、多対多テーブルのアイデア全体が消え、エンティティ モデルを使用してフィールドを自動的に入力できなくなります。しかし、このコラムにふさわしい場所が見つからないようです。「100 グラムの鶏の胸肉を手に入れて、どんなレシピにも追加してください」

どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

1

これは堅実なモデルのスタートです。次の点を考慮してください。

RecipieIngredients -> Recipe (FK), Ingredient (FK), IngredientQuantity
                      Key over (Recipe, Ingredient)

これは依然としてMM 関係であることに注意してください(数量は PK の一部ではなく、FK にも関与していません) 。名前は変更できますが、ある時点で、正規化されたリレーショナル モデルで MM 関係として表す必要があります。

フレームワークが適切な正規化された設計を台無しにしないようにしてください。EF がそのような些細なシナリオに対処できることを願っています。LINQ2SQL でも可能です。

于 2013-05-16T06:00:56.150 に答える