数据库设计
范式概述
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、 第四范式(4NF)和第五范式(5NF,又称完美范式)。
第一范式
第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。第一范式就是无重复的域。
第一范式每一列不可再拆分,称为原子性。
第二范式
先行了解概念:
函数依赖:通过a的属性值可以确定唯一b的属性值,则称b依赖于a;
在1NF的基础上,
完全函数依赖:a是一个属性组,b属性值的确定需要依赖a属性组中的所有值,则b完全依赖于a
部分函数依赖:a是一个属性组,b属性值的确定只需要依赖a属性组中某一些值
传递函数依赖:a确定于b,b确定于c,如果通过a属性组的值可以确定b的值,b属性组的值可以确定c,则说c传递函数依赖于a;
码:如果一个属性或属性组在一张表中,被其他所有属性所完全依赖,则说这个属性是该表的码;
主属性:码属性中的所有属性;
非主属性:除过码属性组的属性;
第二范式:在1NF的基础上,非码属性必须完全依赖于主码(在1NF的基础上消除非主属性对主码的部分函数依赖);
第二范式的特点:
- 一张表只描述一件事情。
- 表中的每一列都完全依赖于主键
第三范式
第三范式:在2NF的基础上,任何非主属性不依赖于其他非主属性(在2NF的基础上消除传递依赖)
满足第三范 式的数据库表应该不存在如下依赖关系:主键列 → 非主键列 x → 非主键列 y;
不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。
还有一些更严谨的范式要求,满足以上这三个范式可以满足大多数的数据库设计;