关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式,满足最低要求的为第一范式,简称1NF。在第一范式中满足进一步要求的为第二范式,其余以此类推。各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,还又称完美范式)。

第一范式(1NF)

第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。第一范式就是无重复的域。

不满足第一范式的数据库模式不能称为关系数据库。

第二范式(2NF)

第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。

2NF在1NF的基础上,非码属性必须完全依赖于码。在1NF基础上消除非主属性对主码的部分函数依赖。

第三范式(3NF)

第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

巴斯-科德范式(BCNF)

巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,事实上是对第三范式的修正,使数据库冗余度更小。

满足BCNF条件:

  • 所有非主属性对每一个候选键都是完全函数依赖;
  • 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;
  • 没有任何属性完全函数依赖于非候选键的任何一组属性;

第四范式(4NF)

1NF、2NF、3NF和BCNF都是在函数依赖的范畴讨论关系模式的范式问题。如果仅考虑函数依赖这一种数据依赖,属于BCNF的关系模式已经很完美了。但考虑到多值依赖,属于BCNF的关系模式仍存在问题,不能算作是一个完美的关系模式。

4NF限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

第五范式(5NF)

5NF消除了属于4NF的关系模式中存在的连接依赖。

总:规范化过程

过程 影响
1NF ———> 2NF 消除非主属性对码的部分函数依赖。
2NF ———> 3NF 消除非主属性对码的传递函数依赖。
3NF ———> BCNF 消除主属性对吗的部分金额传递函数依赖。
BCNF ———> 4NF 消除非平凡且非函数以来的多值依赖。
4NF ———> 5NF 消除连接依赖。
本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/others/backend/sql/629