gpt4 book ai didi

sql - 针对自定义场景的数据库表设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:42 25 4
gpt4 key购买 nike

我正在尝试设计一个数据库来为不同的人存储一个(或多个)膳食计划。这个问题有两种不同的情况。

第一个场景:

(请引用图片)enter image description here

有 4 个表:PERSON、MEALPLAN、MEALPLAN_FOOD 和 FOOD。 PERSON 表存储拥有膳食计划的每个人的基本信息。 MEALPLAN 表将跟踪每个膳食计划(饮食)。 FOOD 表是不同食物(例如鸡蛋、菠菜、甘薯、燕麦片等)的表格,并存储每种食物的每个“数量单位”(例如 1 杯)的蛋白质/碳水化合物/脂肪/卡路里信息。 MEALPLAN_FOOD 表用作 MEALPLAN 和 FOOD 的查找/关联表。

我相信我已经正确设置了这些表格。每个人都有一个(或多个)膳食计划。每个膳食计划包含一种(或多种)食物/数量。我的问题出现在下一个场景中。

第二种情况:

(请引用图片)enter image description here

第一种情况的局限性在于它仅存储每个膳食计划的食品列表。在第二种情况下,我们想加入额外的表,以便可以按膳食分解和存储膳食计划。每个人将有一个(或多个)膳食计划,每个膳食计划包含 1 至 4 餐(膳食计划可能仅包含 2 或 3 餐)。为了实现这一点,第一个场景的 MEALPLAN_FOOD 查找/关联表被替换为 2 个查找/关联表(MEALPLAN_M<#> 和 M<#>_FOOD)和一个膳食表(M1 用于膳食 1、M2、M3 和 M4) ).

问题:假设第一个场景的设计是正确的,那么第二个场景的设计在完成附加功能方面是否正确?这种设计在附加查找表中是否正确,以便允许每人每餐每餐计划存储食物?或者,是否有更好的方法/设计来完成此任务?

谢谢!

最佳答案

一般来说,每个实体都有一张 table (即每天的膳食计划/膳食一张 table )不是一个好主意。相反,更改您的原始设计 - 在 MEALPLAN 表上添加另一列,将外键指向名为 MEALOFDAY 的新表。这样,您可以添加或删除当天的膳食(允许用户每天吃 6 餐或 10 餐),并且如果您为 MEALPLAN_MEALOFDAY 添加另一个多对多表,则可以允许在多餐之间共享膳食计划。

MEALPLAN 和 MEALOFDAY 的新表结构可能如下所示:

MEALPLAN
========
mealplan_id (pk)
date
notes
person_id (fk)
mealofday_id (fk)

MEALOFDAY
=========
mealofday_id (pk)
meal_number
meal_description

或者,删除 mealofday_id 上的 MEALPLAN 并创建另一个表,如下所示:

MEALPLAN_MEALOFDAY
=========
mealofday_id (fk/pk)
mealplan_id (fk/pk)

关于sql - 针对自定义场景的数据库表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com