设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
平常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)
1、第一范式(1NF)
在关系模型中,每一个列都是不可分割的原子数据项。
在上述表格中,在收货地址这一列有多个属性,不符合原子性原则。
修改后:
2、第二范式(2NF)
在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)。
即一个表中只能保存一类数据,不能将几种不同的数据保存在同一个表当中。
在上述表格中,是以订单号与产品号作为联合主键,故单价与订单号无关。
修改后:
3、第三范式(3NF)
在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。
比如在上述第二范式的例子中,我们不能将总价格放于订单表中,因为价格是依赖于订单项表的,所以总价格应该是通过订单表关联订单项表算出来的。