1NF:符合1NF的关系中的每个属性都不可再分
会存在数据冗余过大,插入异常,删除异常,修改异常的问题
2NF:消除非主属性对于码的部分函数依赖
函数依赖:一个属性(组)可以确定另外一个属性 X(学号)->Y(姓名) ,X(学号,课程) -> Y(分数)
码:一个属性(组)K,其他非K的属性完全依赖于K,主码就是主键;例如学号和身份证号都是码
非主属性:指非码中的属性
部分函数依赖:X(学号,课程)->Y(姓名),这里主属性课程就是多余的,反之就是完全函数依赖
3NF:消除非主属性对于码的传递函数依赖
传递函数依赖:X(学号)-> Y(系名) Y(系名)-> Z(系主任),则X(学号)-> Z (系主任)
第三范式的作用可以看做是“消除冗余”,不同实体的信息分类存储,不出现在同一张表中。
BCNF:消除主属性对于码的部分以及传递函数依赖