我对我正在尝试设计的数据库有疑问,我也想提一下我是初学者,所以请记住这一点。
因此,我正在设计的数据库将用于我正在为学校项目开发的应用程序。该应用程序将是一个健身应用程序,具有许多功能,但主要重点是基于用户提供的一些信息创建饮食。所有产生这种饮食的数据都将来自DB,如食物及其营养素等。
我想要构建这种饮食的方式是,它将创造一个为期7天的样本饮食。每天将有5餐,每餐含有多种产品,例如100克鸡胸肉,100克糙米,100克西兰花。
我已经制作了一张ERD图来帮助我建模,您可以在以下链接中看到
正如你从图片中看到的那样,我创造了食物餐桌,它可以容纳所有可以用来制作餐食的食品,这就是我被卡住的地方。在我的模型中,我将其分解为单独的表格,但我不知道这是否正确并且可行。
我也不确定如何创建“MealTable”到目前为止我已经将meal_id作为PK而food_id作为FK但是我能够创建带有多种食物的膳食或者它将是1餐1 “食物”表中的项目。
类似于“DietTable”和“dayOfTheWeek”我试图在这里采取类似的方法,所以我有diet_id作为PK和day_id作为FK,但这将允许我在同一饮食中有多个“日”实例。
我知道这些问题并不是特定的,但我只想了解如何对此进行建模,以及这种方法是否正确。它是否有效,是否有其他替代方法来模拟类似的问题。
任何帮助或建议都将不胜感激。
答案 0 :(得分:1)
我认为你的ERD图看起来很不错,但我注意到了几件事:
MealTable
餐桌每餐会有多行,所以我会将其重命名为MealFood
以列出每餐中的所有食品。如果您需要为每顿饭添加字段(例如用餐名称),那么请创建一个名为Meal
的单独表格,每餐只有一行day_id
中移除DietTable
,而在diet_id
表格中有一个dayOfTheWeek
列。如果您将其与mealOfTheDay
列配对,则可以在diet_id, day_id, mealOfTheDay
之间创建一个唯一键,以确保每种膳食每天只能吃一顿饭示例dayOfTheWeek
表:
| 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 :(得分:0)
我一直在寻找你的数据库模型,有些东西是缺失的,还有一些需要改变(我的意见)。我已经设计了一个类似的模型,不是为了健身,但是我需要跟进膳食蛋白质来治疗PKU病。你的最终模型(我认为)真的比我设计的更接近:
以下是表格列表: 食物:正如你所做的那样,除了在我的情况下,我用它来描述100克这种食物的蛋白质。 FOOD_UNIT:质量单位(mg,g,...,Kg),体积(ml,cl,...,L) FOOD_CATEGORY:蔬菜,水果...... 日历:日期,日复一日...我认为它比使用简单的星期ID和餐饮ID更有用。如果soneine在星期一和另一个星期五开始饮食,他们会吃同一餐,但事实上第一个人可能比另一个人需要更多或更少的食物。实际上你有一个很大的问题。 MEAL_PERIOD:早上好,......晚上。在这里使用时间有助于确保在清晨或午餐附近吃饭 人:你正在编辑这顿饭的人。有几个人需要不同的蛋白质,脂肪,... MEAL:我想你知道放在这里的东西(person_id上的主键,calendar_id,meal_period_id)。在此表中添加所有食物和数量。不要忘记在food_unit_id上添加外键,在你的情况下你的diet_id
现在无法绘制架构,但通常您可以使用所有元素绘制一个通常符合您需求的酷图。