Database design 适合度跟踪的特定数据库结构

Database design 适合度跟踪的特定数据库结构,database-design,Database Design,我一直在想这个数据库到底应该如何建模。我正在使用RubyonRails做一个健身跟踪网站。我希望用户能够维护一个练习列表,然后他们可以使用该列表来构建和维护他们的例程列表。然后,当他们真正完成这一常规动作时,它会进行一次训练,记录下他们进行这一常规动作时的信息 因此,练习和例程更像是用户可以使用的模板,因此他们不必每次都重新输入所有信息。我感到困惑的是如何把这些放在一起。一个程序可以有不同数量的练习,所以我知道我需要另一个表格来保存它们之间的关联。我的问题是,我怎样才能在每次训练表中记录这些信息

我一直在想这个数据库到底应该如何建模。我正在使用RubyonRails做一个健身跟踪网站。我希望用户能够维护一个练习列表,然后他们可以使用该列表来构建和维护他们的例程列表。然后,当他们真正完成这一常规动作时,它会进行一次训练,记录下他们进行这一常规动作时的信息

因此,练习和例程更像是用户可以使用的模板,因此他们不必每次都重新输入所有信息。我感到困惑的是如何把这些放在一起。一个程序可以有不同数量的练习,所以我知道我需要另一个表格来保存它们之间的关联。我的问题是,我怎样才能在每次训练表中记录这些信息?我希望这个问题是明确的,下面是我目前关于如何建模这个设置的想法

锻炼
类型:字符串(仅限于“强度”或“有氧运动”)
代表:int
重量:浮动
集合:int
距离:浮动
总时间:时间


例行程序
标题:字符串


锻炼
日期时间:日期时间

我不确定如何记录实际的训练数据。我可以整天构建模板,但其余的我都做不到。非常感谢您的帮助。

[免责声明:我不熟悉RubyonRails,所以这个答案纯粹是从数据库建模的角度出发的。]

看起来您需要类似于以下内容的数据库结构:

  • 上图仅显示了表之间关系建模的关键字段。根据需要在“骨架”上添加“肉”

  • 例行程序和练习之间存在多对多关系,因此多个例行程序可以包含相同的练习(反之亦然)。该模型目前允许在不同的用户之间共享练习-如果不需要,请告诉我

  • 例程_EXERCISE.EXERCISE_NO定义给定例程中的练习顺序。同时,ROUTINE_EXERCISE.EXERCISE_ID不在主键中,允许在同一例程中的多个“位置”重复相同的练习

  • 例程当前对用户是“私有”的。如果它们应该在用户之间共享,那么用户和例程之间需要有一个额外的连接表,并且需要更改对谁可以训练下面描述的给定例程的限制

  • 例程使用标识关系(ROUTINE.USER_ID既是FK又是PK的一部分),因此当训练引用USER和ROUTINE时,它可以从两者迁移USER_ID。这可确保用户无法完成属于其他用户的例行训练

  • ROUTINE.ROUTINE_名称是例程的可读名称,在给定用户级别上是唯一的,但不同的用户可以“重用”相同的名称。您可以使用类似整数例程的东西来保持引用表的精简

  • 训练的主键对于以下情况非常有用:本质上,属于同一用户的所有训练都将物理上紧密地存储在数据库中。据推测,训练表将是增长最快的表,因此将所有内容很好地“预先分组”(按用户)和“预先排序”(按日期/时间,针对给定用户)可以提高性能

  • WORKOUT.ROUTINE_名称可以为空,因此当用户更改或删除某个例程时,可以断开该例程与该例程的连接,而不会删除该例程本身。另一种方法是从不修改或删除例程,而是使用某种形式的版本控制(用于修改)和删除标志(用于删除)。一些简单的东西