【发布时间】:2016-02-22 17:59:47
【问题描述】:
我正在尝试设计一个数据库来存储不同人的一个(或多个)膳食计划。这个问题有两种不同的情况。
第一个场景:
有 4 个表:PERSON、MEALPLAN、MEALPLAN_FOOD 和 FOOD。 PERSON 表存储拥有膳食计划的每个人的基本信息。 MEALPLAN 表将跟踪每个膳食计划(饮食)。 FOOD 表是不同食物(例如鸡蛋、菠菜、甘薯、燕麦片等)的表,并存储每种食物的每个“数量单位”(例如 1 杯)的蛋白质/碳水化合物/脂肪/卡路里信息。 MEALPLAN_FOOD 表用作 MEALPLAN 和 FOOD 的查找/关联表。
我相信我已经正确设置了这些表。每个人都有一个(或多个)膳食计划。每个膳食计划由一种(或多种)食物/数量组成。我的问题出现在下一个场景中。
第二种情况:
第一个场景的局限性在于它只存储每个膳食计划的食物列表。在第二个场景中,我们想合并额外的表格,以便可以按餐分解和存储膳食计划。每个人将有一个(或多个)膳食计划,每个膳食计划包含 1 至 4 餐(膳食计划可能仅包含 2 或 3 餐)。为了实现这一点,第一个场景的 MEALPLAN_FOOD 查找/关联表被替换为 2 个查找/关联表(MEALPLAN_M 和 M_FOOD)和一个膳食表(M1 表示膳食 1、M2、M3 和 M4 )。
问题:假设第一个场景的设计是正确的,那么第二个场景的设计在完成附加功能方面是否正确?这种设计在额外的查找表中是否正确,以允许每人每餐每餐计划存储食物?或者,是否有更好的方法/设计来完成这项任务?
谢谢!
【问题讨论】:
-
任何时候你发现自己在表名或列名中输入了一个数字(除了
address_line_1和address_line_2用于街道地址),你应该得到一个大红旗你做错了什么。 -
@TomH,明白了,谢谢你的信息。我会继续使用它。
标签: sql database postgresql database-schema lookup-tables