Python sqlite3 - 真的不知道我应该如何构建我的数据库表

时间:2014-01-13 22:04:04

标签: python sqlite

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

第一列是日期(条目的日期)。然后在那之后的每一列都将是一个练习,然后是该练习的重量,他们所做的代表的数量,以及多少套。以下是一个人可能进入的一天的例子。

'date' = '1/13/2014'

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

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

我的问题

  1. 除了针对该练习的代表,重量和集合的列之外,我是否应该为每个练习添加一列? (每次运动总共4次)。

    现在我有20个可能的练习(我打算稍后再添加),这将是我的表中包含日期列的总共101列。这似乎与...合作会有问题吗?我错了吗?或者表通常这么大吗? (可能会很快加倍,到200多列)

  2. 我应该如何应对那天没人做的表格中的练习?只需输入'NULL'或'N / A'?

  3. 我如何处理一天内做同样运动的人?我完全失去了这个。 假设一个人以不同的重量和代表进行两次深蹲,我觉得我需要输入一个列表到表中。有没有更好的方法呢?

  4. 提前感谢您的回复。

1 个答案:

答案 0 :(得分:1)

您应该尽量使表格结构平坦,即绝对不是每个练习/设置/代表的列。我建议两个表:

  1. 练习(只是身份证和姓名);和
  2. 事件(ID,日期,ExerciseID,集合,代表,重量)。
  3. 您不需要在每个练习的事件中都有条目,只需要在该练习中有条目,您可以轻松地将表格中的条目组合在一起。用于报告的ExerciseID或日期。如果他们在一天内多次进行同样的练习,那么在事件中有多个条目。

    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
    ...