第一范式(1NF):字段(列)都是单一属性,不可再分。
第二范式(2NF):在1NF基础上,要求在数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。就是消除部分依赖性,意思是在2NF中组合主键(AB)中的A,B不能和其他字段存在组合重复,解决方法就是:1、复合键拆分为两个表。2、不用组合主键,添加一个编号列作为单一主键。
if不按照2NF会出现问题:1、数据冗余:例如一个东西被N个人买,那么这个东西就重复了N-1次。
2、更新异常:若调整了某一产品类型,其他全部的产品都要调整才行
3、插入异常:假设新近一产品,还没人买,这样产品名称类型无法记录到数据库中
4、删除异常:假设顾客把已购买产品退货,这些产品信息就从数据表中删除了。但同时产品其他信息也被删除了。
第三范式(3NF):要求数据表中不存在非关键字段对任一候选关键字段的传递函数依赖。
?传递函数依赖:如果A决定B,B决定C,则C传递函数依赖于A。
鲍依斯-科德 范式(BCNF):建立在3NF基础上,如果数据表中不存在任何字段对任一候选关键字段的传递函数依赖。