pythonsqlite3真的不知道我应该如何构造数据库表

2024-05-02 05:11:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个应用程序,它允许用户输入饮食和锻炼信息,随着时间的推移进行跟踪,并输出他们输入的数据的图表。现在我试着为一个部分(练习部分)提出一个结构

第一列是日期(条目的日期)。之后的每一列都是一个练习,练习的重量,重复的次数,以及几组。这是一个有人可能进入的一天的例子

'date' = '1/13/2014'

'entries = {'Bent Over Row(Barbell)': [['1', '6', '135'], ['1', '5', '155']], 'Deadlift': [['1', '4', '315'], ['1', '2', '315']]}

当然,练习每天都在变化,一个人不可能在一天内完成所有可能的练习

我的问题是:

  1. 我是否应该为每个练习设置一个列,除了该练习的reps、weight和set列之外(每次练习共4次)

    现在,我有20个可能的练习(我打算稍后再添加更多练习),它们在我的表中总共有101列,包括date列。这似乎是有问题的工作…我错了吗?或者桌子通常有这么大(很快就会翻倍,达到200多列)

  2. 我该如何处理那个人那天没有做的桌子上的练习?只写“空”或“不适用”

  3. 我该如何处理一个人在一天内做同样的运动?我对这件事完全不知所措。 假设一个人以不同的重量和重复次数做了两次下蹲,我觉得我需要进入一个列表列表。有更好的办法吗

提前感谢您的回复


Tags: 数据用户目的信息应用程序列表date图表
1条回答
网友
1楼 · 发布于 2024-05-02 05:11:43

你应该尽量使你的桌子结构平坦,也就是说,绝对不能每个练习/集合/代表都有一列。我建议两张桌子:

  1. 练习(只有身份证和姓名);以及
  2. 事件(ID、日期、练习ID、集合、重复次数、重量)

您不需要在每个练习的事件中都有条目,只需要此人有条目,您可以轻松地将表中的条目按练习ID或报告日期等进行分组。如果他们在一天内多次做同样的练习,那么在事件中有多个条目就可以了

Exercises
 -

ID  Name
1   Dead lift 
2   Bent over row (barbell)
...

Events 
 -

ID  Date       ExerciseID  Weight  Sets  Reps
1   13/1/2014  2           135     1     6
2   13/1/2014  2           155     1     5
3   13/1/2014  1           315     1     4
...

相关问题 更多 >