一、第一范式(1 Normal Form )
数据库表中的字段都是单一属性的,即属性应该是不可再分的。
二、第二范式(2Normal Form)
在1NF的基础上,非码属性必须完全依赖于码(候选码 可以根据候选码确定表中其他所有属性的属性,码可以有多个,一般会选择一个主码)。
三、第三范式(3Normal Form)
即在2NF基础上,任何非主属性不依赖于其它非主属性。(所有非主属性必须直接依赖于主键,而不能通过其他非主属性间接依赖主键。)
BC范式(巴斯-科德范式 、BCNF范式、BC范式)
在3NF的基础上,消除主属性对于候选键的部分函数依赖和传递函数依赖。(主属性不能与其他主属性子集存在依赖)
四、第四范式(4Normal Form)
在BC范式的基础上,消除属性间非平凡且非函数依赖的多值依赖(多值依赖是指表中的字段之间存在一对多的关系,也就是一个字段的具体值会由多个字段来决定),如果存在多个独立的多值依赖关系,则必须将这些依赖关系分解成单独的关系模式。每个分解后的模式都应只包含一组相关的数据,以减少数据冗余并提高数据的一致性和完整性。
五、第五范式(5Normal Form)
在4NF的基础上,关系模型R依赖均由R候选码所隐含,是指在连接时,所连接的属性均为候选码。(消除关系中的所有冗余)
反范式
范式的优点是明显的,它避免了大量的数据冗余,节省了存储空间,保持了数据的一致性。但是在有些业务场景优化时,反范式也是一种优化思路,可以通过在数据表中增加冗余字段来提高数据库的读性能。