sql - 锻炼跟踪应用程序的数据库设计。我如何模拟锻炼统计数据与例程的关系?
问题描述
我正在练习使用关系数据库,但我的数据库设计存在问题。我正在制作一个跟踪用户在健身房锻炼的 Web 应用程序。每个用户应该能够拥有多个例程。一个例程可以有多个练习。每个练习都有该特定例程的统计数据。此外,用户可以收藏某项运动并跟踪举起的最高重量。我不确定如何存储特定例程的锻炼统计数据,而不是锻炼本身。这是我的 figma 设计的链接,这将是我的应用在移动屏幕上的样子。希望它提供更多的上下文。https://www.figma.com/file/lzjYLFfqDBux4J5Clyjg7E/Exercise-Tracker?node-id=0%3A1
解决方案
这比我在评论中提到的要多。
考虑一下:应该exercise
是一个唯一的练习列表吗?“手臂卷曲”应该只出现在这个列表中一次吗?
在您当前的数据模型中,如果您在两个不同的例程中使用arm curl,则需要两个arm curl记录,exercise
其中可能不是您想要的。
看起来和之间有很多对exercise
很多routine
一exercise
、手臂弯举可以是多个routine
。一个routine
可以有很多exercise
。所以你需要在两者之间建立一个桥接表
这样你就可以只存储一个“手臂卷曲”exercise
然后您的stats
表将需要通过桥接表加入。
如果您想在不同的例程(实际上是不同的用户)上分析您的手臂卷曲,那么它在此表中应该是唯一的
关于存储highest_weight
。通常,您不会像这样显式存储和维护摘要。相反,您可以在用户对数据感兴趣时对数据进行查询。只有当您由于大量记录(统计数据中可能有 100k)而出现性能问题时,您才会开始考虑这些预先计算的统计数据。
推荐阅读
- python - 我的播放器图片在移动过程中模糊
- javascript - Is there a way to register a global helper file for Handlebar.js?
- excel - 在具有字符串“总利率”的单元格下方执行 if 语句?
- discord.js - Discord JS v12:如何通过 ID 获取消息的内容?
- javascript - 如何将 html 包装到 javascript 变量中并传递给刀片?
- gcc - 就机器代码而言,在 GCC、clang 和/或 LLVM 中实现的架构支持在哪里?
- django - AWS Lightsail“处理 WSGI 脚本时发生异常”
- ansible - with_items 中的多个变量出错
- java - 在不同的线程中运行 JNI 方法
- image - 使用 clenquemapimage() 时如何为 opencl 中的图像 2d 对象计算 image_row_pitch?