第一范式(1NF):
1、每个属性不可再分。
2、相近或一样的属性要尽量合并在一起确保不会产生冗余数据。
上表如果要求把省/市单独划分出来,则不符合1NF。
上表产生数据冗余。
2、第二范式(2NF):非主属性对关键字完全依赖,消除部分依赖。
比如有选课关系表:学号,姓名,成绩,课程,学分。主键为(学号,课程)的属性组。
存在部分依赖:学号->姓名;课程->学分。因此不符合2NF。
3、第三范式(3NF):消除传递依赖,每个属性和主键有直接关系而不是间接关系,即属性不依赖于其他非主属性。
比如有学生档案表:学号,姓名,生源地,生源地编号,邮政编码。主键为(学号)。
存在传递依赖:学号->生源地编号->生源地,邮政编码。因此不符合3NF。
4、BCNF:不存在任意字段对任意候选关键字段的传递函数依赖。
比如寝室管理关系表 (寝室ID,室长ID,物品ID,数量),选主键的时候
(寝室ID,物品ID)---->(室长ID,数量)
也可以
(室长ID,物品ID)------>(寝室ID,数量)
5、第四范式(4NF):存在多值依赖。
例如(商品,买商品的客户,附赠品)
(商品)-->-->(买商品的客户),
(商品)-->-->(附赠品)
都是1:N关系,且联系独立,存在多值依赖关系。