我已经接管了一个存储健身信息的数据库,我们正在就某个表进行辩论,以及它应该保留为一个表还是分成三个表。
今天,有一张名为:锻炼的表格,其中包含以下字段
id、exercise_id、reps、体重、日期、person_id
因此,如果我在一天进行 2 组 3 种不同的练习,那一天的表中将有 6 条记录。例如:
id, exercise_id, reps, weight, date, person_id
1, 1, 10, 100, 1/1/2010, 10
2, 1, 10, 100, 1/1/2010, 10
3, 1, 10, 100, 1 /1/2010, 10
4, 2, 10, 100, 1/1/2010, 10
5, 2, 10, 100, 1/1/2010, 10
6, 2, 10, 100, 1/1/2010, 10
所以问题是,鉴于多条记录中存在一些冗余数据(日期、人员 ID、锻炼 ID),是否应该将其规范化为三个表
WorkoutSummary :
- id
- date
- person_id
WorkoutExercise :
- id
- exercise_id(WorkoutSummary 中的外键)
- exercise_id
WorkoutSets :
- id
- Fitness_exercise_id (WorkoutExercise 的外键)
- reps
- weight
我想缺点是在重构之后查询会变慢,因为现在我们需要连接 3 个表来执行之前没有连接的相同查询。重构的好处是允许将来在锻炼摘要级别或锻炼级别添加新字段,而无需添加更多重复项。
关于这场辩论的任何反馈?