Database 用户日常饮食和锻炼表日常活动数据库设计

Database 用户日常饮食和锻炼表日常活动数据库设计,database,database-design,Database,Database Design,我正在开发一个应用程序,它可以一起管理食物和锻炼。我不确定谁应该存储用户的日常活动 事实上,我有一个餐桌上的食物: id 名称 能量 蛋白质 餐桌膳食,用于储存某些食物制成的膳食,并储存总营养素值: id 名称 猫 总能量 总蛋白质 餐桌餐\用于储存餐中食物的食物: 膳食id 食品标识 注意:部分 桌上运动: id 名称 类型 表3.1.1.2.1 id 名称 类型 持续时间 表2.1.1.1.2.2.1.1.1.1.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2 w

我正在开发一个应用程序,它可以一起管理食物和锻炼。我不确定谁应该存储用户的日常活动

事实上,我有一个餐桌上的食物:

id
名称
能量
蛋白质

餐桌膳食,用于储存某些食物制成的膳食,并储存总营养素值:

id
名称
猫
总能量
总蛋白质

餐桌餐\用于储存餐中食物的食物:

膳食id
食品标识
注意:部分

桌上运动:

id
名称
类型

表3.1.1.2.1

id
名称
类型
持续时间

表2.1.1.1.2.2.1.1.1.1.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2

workout\u id
练习id

现在我的问题是,如何设计一个表来存储用户 日常活动?我需要储存食物、膳食、锻炼和锻炼

我每天都需要抓取一份食物,选择一份或者抓取一顿已经储存好的饭,一次锻炼或者一次锻炼

我一直在做这样的事情,但我真的不确定:

表用户\日常\活动

id
白天
食品标识
餐号
食物份
训练id
练习id

尝试分组是个好主意,还是我需要将事情分开?我是否应该创建这样的表以获得更多控制

user_daily_food
user_daily_meal 
user_daily_workout
user_daily_exercices
假设:

  • 你可以选择食物的特定部分,或运动的持续时间,或从预先定义的膳食/锻炼计划中选择一种
  • 您对保存一天的快照感兴趣,并且可以根据需要更改预定义的膳食和锻炼程序
然后,最简单的方法是从预定义的膳食和锻炼程序中进行选择,并将结果存储在日常活动中:

id
day
food_id
food_id_portion
exercise_id
duration
如果预定义的膳食和/或锻炼程序无法更改和/或您需要回到原始的膳食/锻炼程序(即使它们可以更改),那么我认为您只剩下上面提到的表格。为了简化/规范化,您可以单独存储结果,然后合并结果:

select food_id, food_id portion
from
(
select id, day, food_id, food_id_portion from user_daily_food 
union all
select id, day, food_id, nb_portion from user_daily_meal 
  inner join meals on user_daily_meal.mealid = meals.mealid
) A
我会选择任何产生最少冗余的应用程序,但这取决于特定应用程序的需求。

假设:

  • 你可以选择食物的特定部分,或运动的持续时间,或从预先定义的膳食/锻炼计划中选择一种
  • 您对保存一天的快照感兴趣,并且可以根据需要更改预定义的膳食和锻炼程序
然后,最简单的方法是从预定义的膳食和锻炼程序中进行选择,并将结果存储在日常活动中:

id
day
food_id
food_id_portion
exercise_id
duration
如果预定义的膳食和/或锻炼程序无法更改和/或您需要回到原始的膳食/锻炼程序(即使它们可以更改),那么我认为您只剩下上面提到的表格。为了简化/规范化,您可以单独存储结果,然后合并结果:

select food_id, food_id portion
from
(
select id, day, food_id, food_id_portion from user_daily_food 
union all
select id, day, food_id, nb_portion from user_daily_meal 
  inner join meals on user_daily_meal.mealid = meals.mealid
) A
我会选择产生最少冗余的东西,但这取决于特定应用的需求