首页 > 解决方案 > 锻炼跟踪应用程序的数据库设计。我如何模拟锻炼统计数据与例程的关系?

问题描述

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

数据库设计

标签: sqldatabasepostgresqldatabase-designbackend

解决方案


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

考虑一下:应该exercise是一个唯一的练习列表吗?“手臂卷曲”应该只出现在这个列表中一次吗?

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

看起来和之间有很多对exercise很多routine

exercise手臂弯举可以是多个routine。一个routine可以有很多exercise。所以你需要在两者之间建立一个桥接表

这样你就可以只存储一个“手臂卷曲”exercise

然后您的stats表将需要通过桥接表加入。

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

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


推荐阅读