关系数据库的模式分解:FD和BCNF、3NF以及MVD和4NF

原创 2016年08月29日 11:41:46

  一个优秀的关系模式的分解应当满足三个条件:消除异常(冗余、更新异常、删除异常),信息的可恢复以及依赖的保持。

  对关系数 据库模式进行BCNF分解之后可以消除FD带来的冗余,并满足信息的可恢复(通过自然连接可以达到无损连接),但可能会破会关系的函数依赖的保持,原因是 会将满足FD的属性集合分解到不同的关系模式中,使得FD最小集的减少。在BCNF的基础上引入3NF,放松对BCNF条件的限制,可以得到满足无损连 接、依赖保持,但并不保证能消除异常的关系模式,原因是降低了对函数依赖的限制,条件变为或非平凡函数依赖的左边是超键或其右边仅为主属性构成。

  BCNF可以消除与FD有关的冗余,但仍然会存在MVD导致的冗余,MVD的概念相比FD稍微难以理解,MVD是指在关系R中,当给定某个属性集合的值 时,存在另外一组属性集合,该组属性集合的值与关系中所有其他属性的值独立。为便于理解,将一个关系的属性分为三个属性组A、B、C,当给定属性A的值 时,B和C的属性组上的取值独立,意思是说B和C的取值可以随意搭配出现在关系中,B的取值不会影响C的取值。

  关系模式中MVD的推导相比FD要难一些,对于MVD的推导可以使用chase:从给定的FD和MVD集中推导出需验证的MVD X->->Y, 则初始图例要包含两个在X上一致但在所有其他属性上均不一致的行。使用给定的FD来等同字母,使用给定的MVD来交换已有的两行中某些属性的值,以便在图 例中加入新的行。如果在图例中发现了这样的一个原始元组,它的Y分量被另一个原始元组所替代,那么就推导出了目标MVD。

  MVD推导的具体做法:关系R上存在FD和MVD集,推导或验证MVD:X->->Y。将关系分为三个属性集X、Y和Z,开始时,图例中存在两个元组t和u,两个元组在X属 性组上取值相同,在Y和Z属性组上取值不一致,通过FD等同属性取值和MVD交换属性取值,得到一个元组在Y取值上和t相同以及在Z取值上和Z相等即可。举例:假设关系(A,B,C,D)上给定FD:A->B和MVD:B->->C,证明A->->C在R上成立。下面三个表格对推导过程进行叙述

A B C D
a b1 c d1
a b c1 d

图例中有两个原始元组,其取值满足上A上取值相同,C和BD上取值不一致,运用FD:A->B得到下面图例

A B C D
a b c d1
a b c1 d

在上面的图例中,因为在B列上一致,使用MVD:B->->C,交换C、D两列得到下面一个图例
A B C D
a b c d1
a b c1 d
a b c d
a b c1 d1

从上面图例可以看出,第三个元组其在C上取值和初始图例中的第一个元组相同,在BD上取值和初始图例的第二个元组相同,可以得出MVD:A->->C成立。

  根据范式对关系进行分解的算法见《数据库系统基础教程》原书第三版中的52、59、64页,算法实施起来比较简单,但其中关于关系分解中的基础概念需要深刻理解。

  在对关系数据库进行关系分解时,主要使用上面叙述的BCNF、3NF、4NF,这三种分解的性质见下表中

范式及其分解的性质
性质 3NF BCNF 4NF
消除FD冗余 F T T
消除MVD冗余 F F T
保持FD T F F
保持MVD F F F

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据库的范式(1NF、2NF、3NF、BNCF)

第一范式:关系模式中,每个属性不可再分。属性原子性 第二范式:非主属性完全依赖于主属性,即消除非主属性对主属性的部分函数依赖关系。 第三范式:非主属性对主属性不存在传递函数依赖关系。 BNC...

在算法设计中使用策略模式

辛辛苦苦敲出来,觉得有用的留言啊; //鉴别出图像中还有给定颜色的所有像素;容忍度之内白色,否则黑色 #include #include #include #include using name...

数据库原理 ----- ER图,关系模型,FD,BCNF,3NF

1.    ER图 每个实体集里面都有至少一个关键属性(可能是多个属性组成的集合),在此属性下每个实体各不相同。 键是一组最小的属性集合,它们的值能够唯一地确定实体集中的每个实体。 候选键:可以...
  • susht
  • susht
  • 2016年05月26日 14:30
  • 1786

数据库设计的三大范式、BCNF、4NF

一、理解数据库的范式需要理解几个基本概念: 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主...

数据库设计的三大范式、BCNF、4NF

一、理解数据库的范式需要理解几个基本概念: 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。相当...

关系数据库 范式(NF: Normal Form) 说明

一.范式概述(NF:NormalForm) 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(up...

关系数据库 范式(NF: Normal Form) 说明

一.范式概述(NF:NormalForm) 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(u...

关系数据库 范式(NF: Normal Form) 说明

一.范式概述(NF:NormalForm) 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新...

关系型数据库1NF~6NF,BCNF详解

  • 2015年09月15日 23:05
  • 48KB
  • 下载

3NF和BCNF

3NF范式                 依赖关系                  R(U)  x与y都是u的子集,若对于R(U) 的任意可能关系  r,r中不存在两行记录在x 上的值相同...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关系数据库的模式分解:FD和BCNF、3NF以及MVD和4NF
举报原因:
原因补充:

(最多只允许输入30个字)