第一范式、第二范式、第三范式

  • 格式:pdf
  • 大小:129.21 KB
  • 文档页数:2

第⼀范式、第⼆范式、第三范式

范式

范式(Paradigm)是符合某⼀种级别的关系模式的集合。关系数据库中的关系必须满⾜⼀定的要求,满⾜不同程度要求的为不同范

式。

⽬前关系数据库有六种范式:第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式

(4NF)和第五范式(5NF)。

满⾜最低要求的范式是第⼀范式(1NF)。在第⼀范式的基础上进⼀步满⾜更多要求的称为第⼆范式(2NF),其余范式以次类推。⼀般说

来,数据库只需满⾜第三范式(3NF)就⾏了。

⼀、第⼀范式

所谓第⼀范式(1NF)是指数据库表的每⼀列都是不可分割的基本数据项,同⼀列中不能有多个值,即实体中的某个属性不能有多个值

或者不能有重复的属性。如果出现重复的属性,就可能需要定义⼀个新的实体,新的实体由重复的属性构成,新实体与原实体之间为⼀对多

关系。在第⼀范式(1NF)中表的每⼀⾏只包含⼀个实例的信息。

简⽽⾔之,第⼀范式就是⽆重复的列,即,关系模式中的每⼀个分量都是不可再分的数据项,则该关系模式属于第⼀范式。

不满⾜第⼀范式的例⼦

学⽣,选课

王三, 语⽂;历史;数学

李车, 语⽂;数学;英语

满⾜1NF

学⽣ 选课

王三, 语⽂

王三 历史

王三 数学

李车, 语⽂

李车 数学

李车 英语

⼆、第⼆范式

第⼆范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字⼀部分的属性。如果存在,那么这

个属性和主关键字的这⼀部分应该分离出来形成⼀个新的实体,新实体与原实体之间是⼀对多的关系。为实现区分通常需要为表加上⼀个

列,以存储各个实例的唯⼀标识。

简⽽⾔之,第⼆范式就是⾮主属性⾮部分依赖于主关键字。即当1NF消除了⾮主属性对码的部分函数依赖,则称为2NF。

2NF优化发⽣在联合主键情况下,即⼀张表的主键为KEY(A,B),⽽表中属性C只依赖于A,则成为C对主键的部分依赖。对于单主键

的表,如果优化为1NF后,⾃然就已经满⾜2NF了。

不符合第⼆范式的例⼦:

货物类型货物ID货物名称注意事项瓷碗1⽩⾊瓷碗易碎品瓷碗2青花瓷碗易碎品瓷碗3雕花瓷碗易碎品三合板1普通三合板易燃物品,注意防⽕

在该表中主键为(货物类型,货物ID),货物名称字段完全依赖于这个主键,换句话说,货物的名称完全是取决于这个主键的值的。

但“注意事项”这⼀列,仅依赖于⼀个主键中”货物类型“这⼀个属性。根据第⼆范式规定,既然表中存在⼀个对主键不是完全依赖的字段,那么

我们就可以确定,该表不符合第⼆范式。三、第三范式 满⾜第三范式(3NF) [2]必须先满⾜第⼆范式(2NF)。简⽽⾔之,第三范式(3NF)要求⼀个数据库表中不包含已在其它表中已包含

的⾮主关键字信息。

简⽽⾔之,第三范式就是属性不依赖于其它⾮主属性的传递函数依赖。

举例

存在⼀个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么员⼯信息表中列出部门编号后就不能

再将部门名称、部门简介等与部门有关的信息再加⼊员⼯信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则

就会有⼤量的数据冗余。即:A(员⼯ID)、B(部门ID)、C(部门名称),三列中A->B,A->(B->)C,满⾜第⼆范式,但是由于A->C

是通过B来传递的,因此不符合第三范式。

四、第⼆范式和第三范式区别第⼆范式是指:全部的⾮主键列依赖于全部主键(优化只发⽣在以联合主键作为主键的表)

第三范式是指:⾮主键列必须直接依赖于主键,不能存在传递依赖(优化发⽣在以单主键或联合主键为主键的表,只是⾮主属性间存在依赖)