sql - 在这种情况下, "Day"表是个好主意吗?

标签 sql

因此,我和一个 friend 正在设计一个锻炼跟踪器应用程序作为业余项目。在此应用程序中,您可以拥有 Programs其中包括一组Workouts其中有一堆Sets 。假设您每天只训练一次,并且并不总是想要训练特定的 Workout ,相反,您希望在训练时添加练习。
于是,我们想到了创建一个名为Day的表它将具有以下属性:

  • ID - 作为主键(可能是日期)
  • WorkoutID - 如果该日期没有任何锻炼,则可为 Null。

此外,还有一个名为 DayExercices 的辅助表这将保存当天完成的所有练习。

这些方案将允许我们链接 Workout (这将使我们看到表 WorkoutExercices 中的练习)并且,如果用户想要在当天添加任何其他练习,这是可能的,因为它将被添加到 DayExercices 中。 .

但是,这会被认为是好的做法吗?我们应该改变数据库方案吗?

这是当前的数据库方案。

CurrentDatabaseScheme

最佳答案

所以基本上根据我的理解,一项练习确实可以每天进行多次,所以你需要这样的东西:

ID、日期、锻炼 ID

Id 将成为主键,因为您可以有多个相同的 Day、ExerciseID 对。

我还快速浏览了您的架构,在我看来,您那里有一个圆圈。我建议扔掉WorkoutMuscles table 。锻炼是一组练习,这些练习实际上训练你的肌肉。例如,假设您在锻炼下添加了一项新练习,这意味着您还需要更新 WorkoutMucles。此外,我建议将 WorkoutExercises 表重命名为 Exercises。这些表应该被命名为它们的实体,而不是它们所具有的关系。

如果您想更轻松地检索信息,可以创建 View 。

关于sql - 在这种情况下, "Day"表是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63380126/

相关文章:

sql - 在SQL中查找连续的日期对

sql - CASE 或 IF 然后 SELECT SQL

php - 将数据放入规范化数据库中

mysql - 获取插入行的日期 MySQL

sql - 使用 SQL 进行表修改/重新计算(通过前瞻和回顾进行归约)

sql - DB2 上周日到下周六的语句之间

html - SQL中使用IF语句判断邮件是否发送

java - SQL中使用的本地日期java 8

android - 如何在 Room 中使用 Joda DateTime 日期作为 id,或者如何在查询中获取日期?

sql - 使用 COUNT() 从子查询进行 MAX() 查询