膳食和产品 - 灵活的设计

时间:2017-12-17 16:22:01

标签: sql database-design

我正在尝试学习SQL和实体框架,为此我想创建一个帮助管理餐食的应用程序,但我有一个问题是为我的实体做一个灵活的设计。我想过在名为Products的表格中存储每100克产品及其营养特性的信息。问题是用户应该能够选择产品(来自Products表),然后设置一个吃掉的数量并将其添加到用餐中。结果,用户应该在膳食计划中看到具有适当营养特性的产品乘以给定数量。

示例:

1。鉴于产品记录:{ ProductID :1,名称:“鸡”,数量:100, Kilocalorie < / em>:99,蛋白质:20,碳水化合物:0,脂肪:1.3}

2.User:吃了250克鸡肉。

3.Output: {MealID:1,

ProductID:1,数量:250, Kilocalorie :247.5,蛋白质:50,碳水化合物:0 ,脂肪:3.25,

其他产品......}

我不知道是否应该创建另一个存储具有用户定义数量的产品的表格,或者我应该根据此数量和产品记录以某种方式计算它。我知道我们不应该存储重复项,因此有另一个表的想法似乎很糟糕。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

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

Product:
ProductID
ProductDescription

Nutrition:
NutritionID
NutritionDescription

NutritionValues:
ProductID
NutrionID
ValuePer100Grams

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

我还建议使用ServingSize表来确定将产品大小转换为100克的产品的乘数。

ServingSize:
ProductID
GramsPerServing

这样可以让您的用户灵活地输入食物的数量(一片面包),并为您处理转换为克数。