一、相关概念
超键(super key):能唯一标识元组的属性集。
候选键(candidate key):不含有多余属性的超键(最小的超键)。
主键(primary key):选作元组标识的一个候选键。
外键(foreign key):如果关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键,则该属性集是关系模式R1的外键。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:一个属性没有在任何候选码中出现过,这个属性就是非主属性。
二、六大范式
1、1NF
每个属性值都是不可再分的最小数据单位(原子性)。
2、2NF
如果关系模式R是1NF,而且每一个非主属性都完全依赖于R的候选键,则R为2NF。
1NF消除非主属性对候选键的部分函数依赖=>2NF
性质:不存在非主属性对候选键的部分依赖。
3、3NF
如果关系模式R是2NF,而且每一个非主属性都不传递依赖于R的任何候选键,则R是3NF。
2NF消除非主属性对键的传递函数依赖=>3NF
性质:不存在非主属性对候选键的部分和传递依赖。
4、BCNF
如果关系模式R是1NF,如果对R中的每个属性(包括主属性、非主属性),不存在对键的传递或部分依赖,则R是BCNF。
3NF消除主属性对键的部分和传递函数依赖=>BCNF
性质:不存在属性(主属性,非主属性)对候选键的传递和部分依赖。
BCNF包含3NF,3NF包含2NF,2NF包含1NF。
一般一个数据库设计符合3NF或BCNF就可以了。
5、4NF
把同一表内的多对多关系删除。
BCNF消除非平凡且非函数依赖的多值依赖=>4NF
6、5NF
4NF消除非平凡连接依赖=>5NF