三大范式
- 第一范式 (INF) : 字段(或属性) 是不可分割的最小单元,即不会有重复的列,体现原子性
- 第二范式(2NF):满足 1NF 前提下,存在一个候选码,非主属性全部依赖该候选码,即存在主键,体现唯一性,专业术语则是消除部分函数依赖
- 第三范式 (3NF) : 满足 2NF 前提下,非主属性必须互不依赖,消除传递依赖
第一范式
第一范式是指数据库表中的每一列都必须是原子性的,也就是说,每个列中的值都不能再分解成更小的数据项。同时,每个表必须有一个主键,用于唯一标识每条记录。
第二范式
第二范式是指表中的非主键列必须完全依赖于主键,而不是依赖于主键的一部分。如果有非主键列依赖于主键的一部分,那么就需要将这些列拆分到另一表中。
第三范式
第三范式是指表中的非主键列之间不能存在传递依赖关系。也就是说,非主键字段不能依赖于其他非主键字段。
除了三大范式外,还有BC范式和第四范式,但其规范过于严苛,在生产中往往使用不到。
什么是范式和反范式,以及各自优缺点?
范式是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。
优点 | 缺点 | |
范式 | 范式化的表减少了数据冗余,数据表更新操作快、占用存储空间少。 | 查询时通常需要多表关联查询,更难进行索引优化 |
反范式 | 反范式的过程就是通过冗余数据来提高查询性能,可以减少表关联和更好进行索引优化 | 存在大量元余数据,并且数据的维护成本更高 |
所以在平时工作中,我们通常是将范式和反范式相互结合使用。