Sql 膳食和产品-灵活设计

Sql 膳食和产品-灵活设计,sql,database-design,Sql,Database Design,我正在尝试学习SQL和实体框架,为此我想创建一个帮助管理膳食的应用程序,但我在为实体进行灵活设计时遇到了一个问题。我曾考虑将每100克产品及其营养特性的信息存储在一个名为products的表格中。问题是,用户应该能够选择产品(从产品表),然后设置食用量,并将其添加到他们的膳食中。因此,用户应该在膳食计划中看到营养特性正确乘以给定数量的产品 例如: 1。给定产品记录:{ProductID:1,名称:“鸡肉”,数量:100,千卡:99,蛋白质:20,碳水化合物:0,脂肪:1.3} 2.用户:吃了25

我正在尝试学习SQL和实体框架,为此我想创建一个帮助管理膳食的应用程序,但我在为实体进行灵活设计时遇到了一个问题。我曾考虑将每100克产品及其营养特性的信息存储在一个名为products的表格中。问题是,用户应该能够选择产品(从产品表),然后设置食用量,并将其添加到他们的膳食中。因此,用户应该在膳食计划中看到营养特性正确乘以给定数量的产品

例如:

1。给定产品记录:{ProductID:1,名称:“鸡肉”,数量:100,千卡:99,蛋白质:20,碳水化合物:0,脂肪:1.3}

2.用户:吃了250克鸡肉

3.输出:{MealID:1

产品编号:1,数量:250,千卡:247.5,蛋白质:50,碳水化合物:0,脂肪:3.25

其他产品…}


我不知道是应该创建另一个表来存储用户定义数量的产品,还是应该根据这个数量和产品记录进行计算。我知道我们不应该储存复制品,所以再有一张桌子的想法似乎不好。我将感谢任何帮助

虽然营养价值与产品直接相关,但我会将营养信息分成自己的表格,每个营养价值都作为自己的记录(而不是列)

这允许您在不更改模式的情况下为产品添加新的营养值,因为这只是将另一条记录添加到Nutrition和NutritionValues表中,也不要求每个产品都为每个营养属性输入一个值

我还建议使用一个ServingSize表来确定产品的乘数,以将服务大小转换为100克

ServingSize:
ProductID
GramsPerServing

这将允许用户灵活地输入食物(一片面包)的数量,并处理它们的克数转换。

因此,your设计的示例如下所示:产品{ProductID:1,产品描述:“鸡肉”},营养{NutritionID:1,NutritionDescription:Protein}营养值{ProductID:1,NutritionID:1,每100克的值:20}?@Donios是的。这样可以很容易地添加新的营养素,也不需要每个可能的营养素都有一个值。如果你不知道鸡肉有多少锌,你不必输入。或者,如果你知道西兰花有0克饱和脂肪,你可以输入0作为值,或者你不能输入饱和脂肪f或者那个条目。这取决于你。要捕获这顿饭,你需要将用户ID、产品ID和所吃的克数合并到一张餐桌上。你所消耗的营养价值将是(每100克的价值/100.0*GramsEaten),按营养、产品、用户分组。好的,我现在看到了,你已经解释得很清楚了。非常感谢!
ServingSize:
ProductID
GramsPerServing