定义:
函数依赖:
通过某属性(集)能确定另外一个属性;
(X,Y)--->Z
完全函数依赖:
在函数依赖的基础上,该属性(集)的任意真子集不能确定另一个属性(单属性必定完全函数依赖);
(X,Y)--->Z 并且X!--->Z, Y!--->Z
部分函数依赖:
在函数依赖的基础上,该属性(集)的某真子集能确定另一个属性;
(X,Y)--->Z 并且X--->Z或者 Y--->Z
传递函数依赖:
假如 Z 函数依赖于 Y,且 Y 函数依赖于 X (『Y 不包含于 X,且 X 不函数依赖于 Y』这个前提),那么我们就称 Z 传递函数依赖于 X ;
(X,Y)--->Z , Z--->A, 则A传递函数依赖于(X,Y)
码:
设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。
非主属性:不包含在任何一个码中的属性。(否则为主属性)
范式(NF):
第一范式(1NF):
指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。

第二范式(2NF):
在关系理论中的严格定义我这里就不多介绍了(因为涉及到的铺垫比较多),只需要了解2NF对1NF进行了哪些改进即可。其改进是,2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
第三范式(3NF):
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。
BCNF范式:
在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。