膳食和产品 - 灵活的设计

问题描述 投票:1回答:1

我正在尝试学习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,

其他产品...}

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

sql database-design
1个回答
1
投票

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

Product:
ProductID
ProductDescription

Nutrition:
NutritionID
NutritionDescription

NutritionValues:
ProductID
NutrionID
ValuePer100Grams

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

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

ServingSize:
ProductID
GramsPerServing

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

© www.soinside.com 2019 - 2024. All rights reserved.