您的位置:首页 > 数据库

数据库范式简要介绍

2014-09-02 18:27 148 查看
一、概述
关系数据库范式理论是在数据库设计过程中要依据的准则,数据库结构必须要满足这些准则,才能确保数据的准确性和可靠性。这些准则被称为规范化形式,即范式。在数据库设计过程中,对数据库进行检查和修改并使它符合范式的过程叫做范化。范式一共有五个,但是常用的只有前三个。
数据表规范的程度越高,数据冗余就越少,同时造成人为错误的可能性也就越小;同时,规范化的程度越高,在查询检索时需要做的关联等工作就越多,数据库在操作过程中需要要访问的数据表及其之间的关联也就越多。
 
二、范式
1、第一范式,是最基本的范式。如果关系模式中的所有属性值都是不可再分解的原子值,那么就称关系是第一范式的关系模式。不是第一范式的关系称为非规范化的关系,满足第一范式的关系简称为关系。在关系数据库管理系统中,涉及到的研究对象都是满足第一范式的规范化关系。但是关系中的属性是否都是原子的取决于实际研究对象的重要程度。如对于地址可以用字段address表示,但是当研究对象很重要时,地址也可以分为city,block等。
2、第二范式,如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表就满足第二范式。
3、第三范式,如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数据值之间不存在函数依赖关系,那么该数据表满足第三范式。实际上第三范式就是要求不要在数据库中存储可以通过简单计算得出的数据。这样,不但可以节省存储空间,而且在拥有函数依赖的一方发生变动时,避免了修改成倍数据的麻烦,同时也避免了在这种修改过程中可能造成的人为错误。
 
 
-----------------------------------------------------------------------
第一范式(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 gradetname 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)
第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql 范式