对于数据库范式首先还是要对几个范式的理解:
(1)1NF范式:符合1NF的关系中的每个属性都不可再分
(2)2NF范式:2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖
(3)3NF范式:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖
(4)4NF范式:4NF在 3NF 的基础上消除主属性对于码的部分与传递函数依赖
以下为定义中的一些名词解释:
(1)部分函数依赖
举例:(学号,课名)=>学生姓名,学号决定了学生姓名,存在非主属性学生姓名对于码(学号,课名)的部分函数依赖。
一般我喜欢画图表示
(A,B)属于码,C属于非主属性,C依赖于A,即C对于码(A,B)部分函数依赖
(2)传递函数依赖
举例:学号=》系名,系名=》系主任,此时学号间接也就决定了系主任,存在非主属性系主任对于码学号的传递函数依赖。
A属于码,B,C属于非主属性,存在C对于A的传递函数依赖
另外还有主属性对于码的部分函数依赖。
若(A,C)(B,C)都为主码但存在B依赖于A。
(3)完全函数依赖
举例(学号,课名)=>成绩,成绩由学号和课名共同决定。或者学号=》姓名,学号决定了姓名。