【发布时间】:2011-02-06 17:52:14
【问题描述】:
我已经接管了一个存储健身信息的数据库,我们正在就某个表进行辩论,以及它应该保留为一个表还是分成三个表。
今天,有一张名为:workouts 的表格,其中包含以下字段
id, exercise_id, reps, weight, date, person_id
因此,如果我在一天内进行 2 组 3 种不同的练习,那一天的表中将有 6 条记录。例如:
id、exports_id、reps、体重、日期、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),是否应该将其规范化为三个表
锻炼总结:
- 身份证
- 日期
- person_id
锻炼锻炼:
- 身份证
- 锻炼 ID(WorkoutSummary 中的外键)
- 练习 ID
锻炼套装:
- 身份证
- Fitness_exercise_id(WorkoutExercise 的外键)
- 代表
- 重量
我想缺点是在重构之后查询会变慢,因为现在我们需要连接 3 个表来执行之前没有连接的相同查询。重构的好处是允许将来在锻炼摘要级别或锻炼级别添加新字段,而无需添加更多重复项。
对此辩论有何反馈?
【问题讨论】:
-
正在使用什么数据库?
标签: sql database-design database-schema database-normalization