首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >饮食数据库模型

饮食数据库模型
EN

Stack Overflow用户
提问于 2014-02-23 22:19:42
回答 2查看 1.9K关注 0票数 0

我有一个关于数据库的问题,我目前正在尝试设计,我也想提到我是一个初学者,所以请记住这一点。

因此,我目前正在设计的DB将用于我为学校项目开发的应用程序。该应用程序将是一个健身应用程序,它将有许多功能,但主要的重点将是根据用户提供的一些信息创建饮食。所有产生这类饮食的数据将从数据库中提取,如食物及其营养物等。

我想要构建这种饮食的方式是,它将创造一个为期7天的样本饮食。每天有5顿饭,每餐包括100克鸡胸,100克糙米,100克西兰花。

我做了一个ERD图来帮助我建立模型,您可以在下面的链接中看到

http://imgur.com/0ivcM5x

从图片中你可以看到,我创建了“食物表”,它可以容纳所有可以用来制作食物的食物,这就是我被困在这里的地方。在我的模型中,我把它分解成不同的表,但我不知道这样做是否正确,是否有效。

我也不知道如何创建"MealTable“到目前为止,我已经得到了meal_id作为PK和food_id作为一个FK,但我是否能够创建多个食物项目的饮食,还是会是一餐一项从”食物“表。

类似于"DietTable“和"dayOfTheWeek”,我试图在这里采取类似的方法,因此我得到了diet_id作为PK,day_id作为FK,但这将允许我在相同的饮食中有多个“一天”的例子。

我知道这个问题并不是很具体,但我只是想了解如何对这个问题建模,以及这种方法是否正确。它会起作用吗?是否有其他替代方法来模拟类似的问题。

如有任何帮助或建议,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-23 23:14:08

我认为你的ERD图看起来不错,但我注意到了一些事情:

  • 看起来您的MealTable表每餐有多行,所以我会将其重命名为MealFood,以列出每顿饭中的所有食物。如果需要在每顿饭中添加字段(如餐名),则创建一个名为Meal的单独表,该表每餐只有一行。
  • 我将从day_id中删除DietTable,而在dayOfTheWeek表中有一个diet_id列。如果您将其与mealOfTheDay列配对,则可以在diet_id, day_id, mealOfTheDay上创建一个惟一的键,以确保每天每餐只吃一餐。

示例dayOfTheWeek表:

代码语言:javascript
复制
| diet_id | day_id | mealOfTheDay | meal_id |
---------------------------------------------
| 1       | 1      | 1            | 999     |
| 1       | 1      | 2            | 642     |
| 1       | 1      | 3            | 242     |
| 1       | 1      | 4            | 298     |
| 1       | 1      | 5            | 322     |
| 1       | 1      | 5            | 111     |  <- Unique key will not allow 
                                                  this row as it's the second 
                                                  fifth meal on same day for 
                                                  diet 1
  • 同时,尽量让你的命名保持一致。有些表名以Table结尾,而有些则没有。
票数 1
EN

Stack Overflow用户

发布于 2014-02-23 23:39:45

我一直在寻找您的数据库模型,有一些东西是缺少的,还有一些需要改变(我的观点)。我已经设计了一种类似的模型,不是为了健身,但我需要跟随蛋白质来治疗PKU疾病。你的最后一个模型(我认为)比我设计的更接近:

这是表的列表:食物:正如你所做的,除了在我的例子中我用它来描述100克这种食物的蛋白质。FOOD_UNIT :质量单位(mg,g,.,Kg),体积(ml,cl,.,L) FOOD_CATEGORY :蔬菜,水果,.日历:日期日复一日..。我认为这对你来说比一周中简单的一天和一顿饭更有用。如果soneine在周一开始节食,在周五再吃一次,他们会吃完全相同的一餐,但事实上,第一个人可能比另一个人需要更多或更少的食物。其实你在这件事上有个大问题。MEAL_PERIOD :早上好.晚上。使用这里的时间有助于准确地确定是否在清晨或附近从午餐的人:为谁你在编辑这顿饭。几个人对蛋白质、脂肪、.有不同的需求.我想你知道在这里放什么( person_id,calendar_id,meal_period_id的主键)。在本表中添加所有食物和数量。不要忘记在food_unit_id上添加外键,在您的例子中,也不要忘记添加diet_id

现在无法绘制模式,但是通常您有所有的元素来绘制一个很酷的图表,这通常符合您的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21975444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档