数据库范式
原创2026/3/5大约 3 分钟

范式是符合某一种设计要求的总结
在数据库中表的设计,必须保证其合理性,数据库表的设计关系整个系统的架构,关系到后续的开发效率和运行效率
关系型数据库有六种常见范式:
- 第一范式(1NF)
- 第二范式(2NF)
- 第三范式(3NF)
- 巴斯-科德范式(BCNF)
- 第四范式(4NF)
- 第五范式(5NF)
在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以此类推。范式越高,设计质量越高,在现实设计中也越难实现

一般数据库设计,达到第三范式就足够了
数据库范式中的概念
- 元组:可以理解为一张表中的每条记录,也就是每一行数据。
- 属性:可以看作是“表的一列”。
- 主属性:
- 在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。
- 例如:在关系——学生(学号,姓名,年龄,性别,班级)中,主属性是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性。
- 非主属性:- 不包含在候选码中的属性称为非主属性,相对于主属性来定义的。
- 主属性:
第一范式(1NF) 💎

最基本的范式,是其他范式的基础
数据库表每列都是不可分割的基本数据项,同一列中不能有多个值,
确保每列保持原子性

根据第一范式设计表

第一范式存在的问题
- 数据冗余

- 插入数据异常

- 修改数据复杂

- 删除异常

第二范式(2NF) 💎

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。



根据第二范式设计表

第二范式存在问题
- 插入异常

- 删除异常

第三范式(3NF) 💎

必须满足第二范式
确保数据表中的每一列数据都和主键直接相关,而不能间接相关


根据第三范式设计表

符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。
数据库范式总结 💎
相关信息
数据库设计范式优点:
- 结构合理
- 冗余较小
- 尽量避免插入删除修改异常
数据库设计范式缺点:
- 性能降低,多表查询比单表查询速度慢
在实际设计中,要整体遵循范式理论
如果在某些特定的情况下还死死遵循范式也是不可取的,
因为可能降低数据库的效率,此时可以适当增加冗余而提高性能
第一范式(1NF):字段不能再分
第二范式(2NF):不存在部分依赖

第三范式(3NF):不存在间接依赖

使用范式可以减少冗余,但是会降低性能
特定表的的设计可以违反第三范式,增加冗余提高性能
至此,本章节的学习就到此结束了,如有疑惑,可对接技术客服进行相关咨询。