前言
一、 为什么需要数据规范化?
不合规范的表设计会导致的问题:
1.信息重复
2.更新异常
3.插入异常:无法正确表示信息
4.删除异常:丢失有效信息
二、具体描述
1.第一范式 (1st NF)
描述:第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元,则满足第一范式
2.第二范式(2nd NF)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
描述:一张表只能描述一件事情
3.第三范式(3rd NF)
如果一个关系满足第二范式,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式。
描述:需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
三、规范性和性能的问题
通常关联的表不超过三张表
- 考虑商业化的需求和目标,(成本和用户体验!)数据库的性能通常更加的重要
- 在规范性能的问题的时候,适当的考虑一下规范性,并非要一定遵守!!
- 有时候会故意给一些表增加一些冗余字段(从多表查询变成单表查询)
- 故意增加一些计算列(从大数据量降为小数据量的查询:增加索引)
总结
参考《关系型数据库设计:三大范式的通俗理解》
https://www.cnblogs.com/wsg25/p/9615100.html