我正在尝试设计一个小吃吧自动化系统(回答第一个问题 - 不,这不是一个家庭作业,它是出于学习目的)而且我对食谱以及如何在数据库中展示它们存在问题。我有两个选择:
选项1:
[Ingredients] -> [IngrID, IngrName]
[Recipe] -> [RecipeID, RecipeName]
[IngRecipe] -> [IngrID, RecipeID]
在这种情况下,第三个表是一个典型的多对多表,模型看起来正确,使用Entity Framework操作数据是一块蛋糕。但我也想跟踪金额。通常我使用Ingredients作为表来插入新的purcheses。如果成分存在,只需更新金额即可。
选项2
现在,如果我将列“amount”作为列添加到IngRecipe,那么多对多表的整个想法就会消失,我不再可以使用实体模型自动填充字段。但我似乎无法为这一专栏找到更合适的地方。我会在哪里以及如何说“好吧,给我100克鸡胸肉并加入任何食谱”
感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
这是一个可靠的模型开始,请考虑:
RecipieIngredients -> Recipe (FK), Ingredient (FK), IngredientQuantity
Key over (Recipe, Ingredient)
请注意,仍然是 MM关系(数量不是PK的一部分,也不属于FK),只是为此关系对提供了更多相关数据 。名称可以更改,但在某些时候,必须在规范化的关系模型中表示为M-M关系。
不要让框架破坏一个良好的规范化设计 - 我希望EF可以应对这些微不足道的场景;甚至LINQ2SQL也可以。