第一范式:
  所有的属性都是不可分割的原子单位。
第二范式:
  如果关系模式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的子集, A不是X的子集,那么称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

  张老师 山西太原....
  李老师 中国北京....
  刘老师 中国上海....
  ----------------------------------------------------------------------
BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则RCNF的关系模式。
例:配件管理关系模式 WPE(WNO,PNO,ENO,QNT)分别表仓库号,配件号,职工号,数量。有以下条件
a.一个仓库有多个职工。
b.一个职工仅在一个仓库工作。
c.每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件。
d.同一种型号的配件可以分放在几个仓库中。
分析:由以上得 PNO 不能确定QNT,由组合属性(WNO,PNO)来决定,存在函数依赖(WNO,PNO) -> ENO。由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性(WNO,PNO)才能确定负责人,有(WNO,PNO)-> ENO。因为 一个职工仅在一个仓库工作,有ENO -> WNO。由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有 (ENO,PNO)-> QNT。
一下候选关键字,因为(WNO,PNO) -> QNT,(WNO,PNO)-> ENO ,因此 (WN
O,PNO)可以决定整个元组,是一个候选关键字。根据ENO->WNO,(ENO,PNO)->QNT,故(ENO,PNO)也能决定整个元组,为另一个候选关键字。属性ENO,WNO,PNO 均为主属性,只有一个非主属性QNT。它对任何一个候选关键字都是完全函数依赖的,并且是直接依赖,所以该关系模式是3NF。
分析一下主属性。因为ENO->WNO,主属性ENO是WNO的决定因素,但是它本身不是关键字,只是组合关键字的一部分。这就造成主属性WNO对另外一个候选关键字(ENO,PNO)的部 分依赖,因为(ENO,PNO)-> ENO但反过来不成立,而P->WNO,故(ENO,PNO)-> WNO 也是传递依赖。
虽然没有非主属性对候选关键辽的传递依赖,但存在主属性对候选关键字的传递依赖,同样也会带来麻烦。如一个新职工分配到仓库工作,但暂时处于实习阶段,没有独立负责对某些配件的管理任务。由于缺少关键字的一部分PNO而无法插入到该关系中去。又如某个人改成不管配件了去负责安全,则在删除配件的同时该职工也会被删除。
解决办法:分成管理EP(ENO,PNO,QNT),关键字是(ENO,PNO)工作EW(ENO,WNO)其关键字是ENO
缺点:分解后函数依赖的保持性较差。如此例中,由于分解,函数依赖(WNO,PNO)-> E
NO 丢失了, 因而对原来的语义有所破坏。没有体现出每个仓库里一种部件由专人负责。有可能出现 一部件由两个人或两个以上的人来同时管理。因此,分解之后的关系模式降低了部分完整性约束。
一个关系分解成多个关系,要使得分解有意义,起码的要求是分解后不丢失原来的信息。这些信息不仅包括数据本身,而且包括由函数依赖所表示的数据之间的相互制约。进行分解的目标是达到更高一级的规范化程度,但是分解的同时必须考虑两个问题:无损联接性和保持函数依赖。有时往往不可能做到既有无损联接性,又完全保持函数依赖。需要根据需要进行权衡。
1NF直到BCNF的四种范式之间有如下关系:
BCNF包含了3NF包含2NF包含1NF
小结:
目地:规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新
原则:遵从概念单一化 "一事一地"原则,即一个关系模式描述一个实体或实体间的一种联系。
规范的实质就是概念的单一化。
方法:将关系模式投影分解成两个或两个以上的关系模式。
要求:分解后的关系模式集合应当与原关系模式"等价",即经过自然联接可以恢复原关系而不丢失信息,并保持属性间合理的联系。
注意:一个关系模式结这分解可以得到不同关系模式集合,也就是说分解方法不是唯一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空间,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。
在关系数据库中,除了函数依赖之外还有多值依赖,联接依赖的问题,从而提出了第四范式,第五范式等更高一级的规范化要求。在此,以后再谈。

我见过的数据库设计,很少有人做到很符合以上几个范式的,一般说来,第一范式大家都可以遵守,完全遵守第二第三范式的人很少了,遵守的人一定就是设计数据库的高手了,BCN
F的范式出现机会较少,而且会破坏完整性,你可以在做设计之时不考虑它,当然在ORACLE中可通过触发器解决其缺点。以后我们共同做设计之时,也希望大家遵守以上几个范式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。