我正在练习使用关系数据库,但在我的数据库设计中遇到了问题。我正在制作一个跟踪用户在健身房锻炼的网络应用程序。每个用户应该能够有多个例程。一个例程可以有多个练习。每个练习都有该特定例程的统计数据。此外,用户可以收藏锻炼并跟踪举起的最高重量。我不确定如何存储特定例程的锻炼统计数据,而不是锻炼本身。这是我的 figma 设计的链接,它将是我的应用程序在移动屏幕上的样子。希望它提供更多的上下文。 https://www.figma.com/file/lzjYLFfqDBux4J5Clyjg7E/Exercise-Tracker?node-id=0%3A1
答案 0 :(得分:1)
这比我在评论中提到的要多。
考虑:exercise
应该是唯一的练习列表吗? “arm curl”应该只出现在这个列表中一次吗?
在您当前的数据模型中,如果您在两个不同的例程中有 arm curl,则在 exercise
中需要两个 arm curl 记录,这可能不是什么你想要。
exercise
和 routine
之间似乎是多对多
一个exercise
,手臂卷曲可以在多个routine
中。一个 routine
可以有多个 exercise
。所以你需要在两者之间建立一个桥接表
这样您就可以在 exercise
那么您的 stats
表将需要通过桥接表加入。
如果你想在不同的例程(实际上是不同的用户)上分析你的手臂卷曲,那么它在这个表中应该是唯一的
关于存储 highest_weight
。通常,您不会像这样显式存储和维护摘要。相反,当用户对数据感兴趣时,您可以跨数据运行查询。只有当您因大量记录(统计数据中可能有 10 万条)而出现性能问题时,您才开始考虑这些预先计算的统计数据。