1.第一范式[1NF]
第一范式是最基本的范式,符合数据表的原子性
简单的说,第一范式就是每一个属性都不可再分。
- 表中的同一列的类型相同
- 一个列名只能对应到一列
- 并且每一列都不可分
- 行的上下关系互补影响
2.第二范式[2NF]
2NF在1NF的基础之上,消除了非主属性对于主属性的部分函数依赖
简单的说,是表中的非主属性必须完全依赖于主属性。
完全依赖:是指不能存在仅依赖候选键一部分的属性
只有一个主属性的表如果符合第一范式,那一定是第二范式。
判断一个关系是否属于第二范式:
1.找出数据表中的所有候选键
2.找出所有主属性和非主属性
3.判断所有的非主属性对候选键的部分函数依赖
当不满足2NF时进行拆表,消除部分依赖,满足2NF
3.第三范式[3NF]
第三范式(3NF)就是指表中的所有数据元素中不但要能唯一地被主关键字所标识
而且它们之间还必须相互独立,不存在其他的函数关系
也就是说,在2NF的基础上消除传递函数依赖
所谓传递函数依赖,指的是如果存在”A到B到C”的决定关系,则C传递函数依赖于A。
符合第三范式的数据表,消除了数据冗余、更新异常、插入异常和删除异常。
BCNF:消除主属性对主键的部分与传递依赖
4.第四范式[4NF]
第四范式是 消除表中的多值依赖
以解信息冗余,达到”一事一地”也就是一对一的关系。
拆表消除多值依赖
总结:
- 1NF保证原子性
- 2NF去除非主属性对于主属性的部分依赖
- 3NF去除非主属性对于主属性的传递依赖
- BCNF:消除主属性对主键的部分与传递依赖
- 4NF:消除表中的多值依赖