您的位置:首页 > 数据库

关系数据库的范式理论

2015-11-23 22:51 218 查看
一、基本概念

关系数据库范式理论是在数据库设计过程中要依据的准则,数据库结构必须要满足这些准则,才能确保数据的准确性和可靠性。这些准则被称为规范化形式,即范式。在数据库设计过程中,对数据库进行检查和修改并使它符合范式的过程叫做范化。范式一共有五个,但是常用的只有前三个。

二、范式

1、第一范式—1NF
是最基本的范式。指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或不能有重复的属性。如果关系模式中的所有属性值都是不可再分解的原子值,那么就称关系是第一范式的关系模式(实体属性原子性)。不是第一范式的关系称为非规范化的关系,满足第一范式的关系简称为关系。在关系数据库管理系统中,涉及到的研究对象都是满足第一范式的规范化关系。但是关系中的属性是否都是原子的取决于实际研究对象的重要程度。如对于地址可以用字段address表示,但是当研究对象很重要时,地址也可以分为city,block等。

2、第二范式—2NF(在1NF基础上消除非主属性对主码的部分函数依赖)
如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表就满足第二范式(实体属性完全依赖主键)。

3、第三范式

在1NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]

第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

三、总结

第一范式:

所有的属性都是不可分割的原子单位。
第二范式:
如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式。
第三范式:
如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的
BC范式:(BCNF)。
如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关 系R是属于BCNF的。

四、举例说明

第一范式(1NF):
如果关系模式R的每个关系都是r的属性值不可分割的原子值,则称关系R是第一范式的模式.
  不满足第一范式的情况:

  关系R(name,address,phone)

  ----------------------------------------------------------------------

  name address phone
AA 山西太原 2204446

   AA 山西太原 8350524

  ----------------------------------------------------------------------

说明:phone可以再分(可以分为phone1和phone2).
*************************************************************************************
第二范式(2NF):
1):局部依赖:

  对于依赖关系 W->A (A依赖于W),如果存在X归属于W,且X->A(A依赖于X),那么称W->A是局部依赖;否则称W->A是完全依赖.

  比如:

  关系模式R(sno,cno,grade,tname,taddr)

  sno:学生学号;cno:课程编号;grade:成绩;tname:老师姓名;taddr:老师住址

  (sno,cno)->(tname,taddr)(sno,cno决定于tname以及cno)是局部依赖,因为cno->(tname,taddr).
2):二范式定义:

  如果关系模式R满足第一范式,且每个非主属性完全依赖于侯选键,则称R满足第二范式.
不满足第二范式的情况:

  关系模式R(sno,cno,grade,tname,taddr)

  sno:学生学号;cno:课程编号;grade:成绩;tname:老师姓名;taddr:老师住址

  ----------------------------------------------------------------------

  sno cno grade tname taddr
  101 001 100 张老师 山西太原....

  102 001 95 张老师 山西太原....

  103 001 98 张老师 山西太原....

  104 002 95 李老师 中国北京....

  105 003 90 刘老师 中国上海....

  ----------------------------------------------------------------------

  说明:出现相同的tname,taddr三次

  消除方法:分解关系模式R

  ----------------------------------------------------------------------

  R1(sno,cno,grade)
  sno cno grade
  101 001 100

  102 001 95

  103 001 98

  104 002 95

  105 003 90

  R2(cno,tname,taddr)
  cno tname taddr
  001 张老师 山西太原....

  002 李老师 中国北京....

  003 刘老师 中国上海....

  ----------------------------------------------------------------------
*************************************************************************************
第三范式(3NF):
1):传递依赖:如果X->Y,Y->A,且Y不依赖X和A不是Y的子集,那么称X->A是传递依赖.(A传递依赖于X)
2):三范式定义:

  如果关系模式R是1NF,且每个非主属性都不依赖于R的侯选键,那么称R满足第三范式.
不满足第三范式的情况:

  关系模式R2(cno,tname,taddr)是2NF模式,如果在R2中存在cno->tname,tname->taddr,那么cno->taddr就是个传递依赖,及不满足第三范式.

  ----------------------------------------------------------------------

  cno tname taddr

  001 张老师 山西太原....

  002 李老师 中国北京....

  003 刘老师 中国上海....

  004 张老师 山西太原....

  005 张老师 山西太原....

  ----------------------------------------------------------------------

  说明:张老师开设了3门课程,上面就出现了3个元组,教师地址重复了3次.

  消除方法:分解关系模式R2

  ----------------------------------------------------------------------

  R3(cno,tname)
  cno tname
  001 张老师

  002 李老师

  003 刘老师

  004 张老师

  005 张老师
  R4(tname,taddr)
  tname taddr
  张老师 山西太原....

  李老师 中国北京....

  刘老师 中国上海....

  ----------------------------------------------------------------------
再补充一下:
第四范式(4NF)
第四范式禁止主键列和非主键列一对多关系不受约束
第五范式(5NF)
第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: