锻炼跟踪应用程序的数据库设计。我如何建模锻炼统计数据与常规的关系?

时间:2021-01-30 23:25:11

标签: sql database postgresql database-design backend

我正在练习使用关系数据库,但在我的数据库设计中遇到了问题。我正在制作一个跟踪用户在健身房锻炼的网络应用程序。每个用户应该能够有多个例程。一个例程可以有多个练习。每个练习都有该特定例程的统计数据。此外,用户可以收藏锻炼并跟踪举起的最高重量。我不确定如何存储特定例程的锻炼统计数据,而不是锻炼本身。这是我的 figma 设计的链接,它将是我的应用程序在移动屏幕上的样子。希望它提供更多的上下文。 https://www.figma.com/file/lzjYLFfqDBux4J5Clyjg7E/Exercise-Tracker?node-id=0%3A1

database design

1 个答案:

答案 0 :(得分:1)

这比我在评论中提到的要多。

考虑:exercise 应该是唯一的练习列表吗? “arm curl”应该只出现在这个列表中一次吗?

在您当前的数据模型中,如果您在两个不同的例程中有 arm curl,则在 exercise 中需要两个 arm curl 记录,这可能不是什么你想要。

exerciseroutine 之间似乎是多对多

一个exercise手臂卷曲可以在多个routine中。一个 routine 可以有多个 exercise。所以你需要在两者之间建立一个桥接表

这样您就可以在 exercise

中存储单个“手臂卷曲”

那么您的 stats 表将需要通过桥接表加入。

如果你想在不同的例程(实际上是不同的用户)上分析你的手臂卷曲,那么它在这个表中应该是唯一的

关于存储 highest_weight。通常,您不会像这样显式存储和维护摘要。相反,当用户对数据感兴趣时,您可以跨数据运行查询。只有当您因大量记录(统计数据中可能有 10 万条)而出现性能问题时,您才开始考虑这些预先计算的统计数据。