gpt4 book ai didi

sql - 这个数据库表应该规范化吗?

转载 作者:行者123 更新时间:2023-12-04 22:52:27 24 4
gpt4 key购买 nike

我接管了一个存储健身信息的数据库,我们正在讨论某个表,以及它应该保留为一张表还是分成三张表。

今天,有一张表叫:锻炼 具有以下字段

id、extraction_id、代表、体重、日期、person_id

因此,如果我在一天内进行 2 组 3 种不同的练习,那么当天该表中将有 6 条记录。例如:

id、extraction_id、代表、体重、日期、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


那么问题来了,鉴于多条记录中存在一些冗余数据(date、personid、extraction_id),是否应该将其规范化为三个表

锻炼总结 :
- ID
- 日期
- person_id

锻炼 :
- ID
- training_id(WorkoutSummary 的外键)
- 运动 ID

锻炼套装 :
- ID
- training_exercise_id(WorkoutExercise 的外键)
- 代表
- 重量

我猜的缺点是在重构之后查询会变慢,因为现在我们需要连接 3 个表来执行之前没有连接的相同查询。重构的好处允许将来在锻炼摘要级别或锻炼级别添加新字段,而不会添加更多重复项。

关于这场辩论的任何反馈?

最佳答案

不要假设标准化后查询会变慢。如果表被正确索引,则在少量表上的联接非常便宜。

另一方面,对非规范化表的查询很容易最终变得更慢。例如,在您的原始模式中,简单地尝试查询完成锻炼的不同日期比使用规范化版本要昂贵得多。

在这一点上绝对正常化它。如果您稍后遇到性能问题,那么除了已经规范化的架构之外,您还可以开始有选择地对数据的某些部分进行非规范化。但是很可能你永远不会用一个小数据库达到那个点。

关于sql - 这个数据库表应该规范化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com