我正在尝试学习SQL和实体框架,为此我想创建一个帮助管理膳食的应用程序,但我有一个问题是为我的实体做一个灵活的设计。我想过在名为Products的表格中存储每100克产品及其营养特性的信息。问题是用户应该能够选择产品(来自Products表),然后设置一个吃掉的数量并将其添加到用餐中。结果,用户应该在膳食计划中看到具有适当营养特性的产品乘以给定数量。
例:
1.鉴于产品记录:{产品编号:1,名称:“鸡”,数量:100,千卡:99,蛋白质:20,碳水化合物:0,脂肪:1.3}
2.用户:吃了250克鸡肉。
3.输出:{MealID:1,
产品编号:1,产品数量:250,千卡:247.5,蛋白质:50,碳水化合物:0,脂肪:3.25,
其他产品...}
我不知道是否应该创建另一个存储具有用户定义数量的产品的表格,或者我应该根据此数量和产品记录以某种方式计算它。我知道我们不应该存储重复项,因此有另一个表的想法似乎很糟糕。我将不胜感激任何帮助。
虽然营养价值与产品直接相关,但我会将营养信息分成自己的表格,每个营养价值都是自己的记录(不是列)。
Product:
ProductID
ProductDescription
Nutrition:
NutritionID
NutritionDescription
NutritionValues:
ProductID
NutrionID
ValuePer100Grams
这允许您在不更改模式的情况下为产品添加新的营养价值,因为它只是在营养和营养价值表中添加另一条记录,并且也不要求每个产品都具有每种营养属性的值输入。
我还建议使用ServingSize表来确定将产品大小转换为100克的产品的乘数。
ServingSize:
ProductID
GramsPerServing
这样可以让用户灵活地输入食物的数量(一片面包),然后为他们处理转换为克数。