版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章关系规范化理论—关系数据库设计理论基础
学习目标
1.理解关系数据模式的数据冗余和操作异常问题及其产生的原因、关系规范化的必要性;2.掌握数据依赖、函数依赖、范式等基本概念;3.掌握1NF~BCNF各级范式的涵义,能够根据关系模式的应用语义分析函数依赖,判定关系模式的范式级别;4.掌握数据依赖公理系统、属性闭包求解算法、最小依赖集及其构造算法;5.掌握关系模式分解等价判定的准则、无损连接性、依赖保持性;6.掌握关系规范化过程、关系模式的3NF分解算法;能够运用函数依赖理论对关系模式逐步求精,对关系模式进行优化;7.了解多值依赖概念和4NF的含义;8.了解关系模式的BCNF分解算法。目录
5.1数据冗余与操作异常问题5.2函数依赖5.3范式5.4数据依赖公理系统5.5模式分解
5.1数据冗余与操作异常问题5.1.1数据冗余与操作异常5.1.2问题原因分析5.1.1数据冗余与操作异常客观事物的联系可以分为两个层面:一是实体与实体之间的联系,二是实体内部特征(即属性)之间的联系。实体间联系表现为数据的逻辑结构,由数据模型予以形式化说明和描述;实体内部属性间联系则表现为数据的语义关联,由数据模式进行意义上的刻画和解释。在关系模型中,这种实体内部属性间联系就表现为语义约束。因此,我们不能随意将一些属性组合在一起形成关系模式;否则,就会带来一系列问题,最主要的问题是数据冗余和操作异常。
5.1.1数据冗余与操作异常数据冗余(DataRedundancy)是指同一数据在一个或多个数据文件中重复存储。数据冗余不仅会占用大量系统存储资源,造成不必要的开销,而且更严重的是,会带来数据库操作的异常,对数据库性能发挥造成不好的影响
5.1.1数据冗余与操作异常【例5.1】设有一个关系模式R(U),其中U为属性集{客户编号,客户姓名,客户性别,出生日期,客户所在省市,联系电话,微信号,商品编号,商品名称,品牌,单价,订购时间,需要日期,数量}。给定关系R的语义如下:①一位客户只有一个客户编号,一种商品名称只有一个商品编号。②每位客户在特定的订购时间订购的每一种商品都有一个数量。③每位客户可以订购同一种商品多次。④每一种商品可由多位客户订购。⑤每位客户只属于一个省市。5.1.1数据冗余与操作异常首先,数据存在大量冗余。其次,数据冗余将会导致数据操作的异常。①插入异常:如果某位客户尚未订购任何商品,则他的信息无法插入到表中。同样,如果某商品尚未有任何客户订购,则其信息也无法插入到表中。②删除异常:若某商品售完,需将其信息删除,则会将之前订购过该商品的客户信息也一起删除。③修改异常:若某客户的联系电话改换了,则要修改多个元组。如果一部分修改,而另一部分不修改,将会出现数据间的不一致。
关系模式R(U)的存在问题5.1.2问题原因分析更新异常问题产生的原因是数据冗余
。数据冗余的产生有着较为复杂的原因。从数据结构角度考察,有两个层面的问题:
一是对多个文件之间联系的处理;
二是同一个文件中数据之间的联系处理。对于第一个层面的问题,数据库系统(特别是关系数据库)已经较好地解决了;但第二个层面的问题,并非可以由关系数据库系统自动解决,它依赖于关系数据模式的设计。
5.2函数依赖5.2.1函数依赖的基本概念5.2.2函数依赖的分类5.2.3函数依赖与数据冗余5.2函数依赖数据依赖是客观世界实体集内部或实体集之间属性相互联系的抽象。为了描述这些联系,人们提出了多种类型的数据依赖,最重要的是:函数依赖(FunctionalDependency,FD)多值依赖(MultivaluedDependency,MD)数据依赖实际上反映了属性之间的相互约束关系。5.2.1函数依赖的基本概念定义5.1
设R(U)是属性集U上的关系模式,X和Y是U的子集,r是R(U)中任意给定的关系实例。若对于r中的任意两个元组s和t,当s[X]=t[X]时有s[Y]=t[Y],则称属性子集X函数决定属性子集Y,或称Y函数依赖于X,记为X→Y。否则,就称X不函数决定Y,记为X
Y。如果有函数依赖X→Y,则称X为决定因素。如果X→Y,并且Y→X,则记为X←→Y。5.2.2函数依赖的分类函数依赖有三种类型:(1)平凡与非平凡函数依赖(2)部分与完全函数依赖(3)传递函数依赖5.2.2函数依赖的分类(1)平凡与非平凡函数依赖定义5.2
对于函数依赖X→Y,若,则称该函数依赖为平凡函数依赖(TrivialFunctionalDependency)。对于函数依赖X→Y,若YX,则称该函数依赖为非平凡函数依赖(NontrivialFunctionalDependency)。注意:当Y是X的子集时,Y必函数依赖于X,这种依赖不反映任何新的语义,因此这种依赖没有实际意义。所研究的函数依赖通常都是指非平凡依赖。5.2.2函数依赖的分类(2)部分与完全函数依赖定义5.3
如果X→Y,且对于X的任一真子集X
,都有X
Y,则称Y完全函数依赖(FullFunctionalDependency)于X,记为XY;否则称Y部分函数依赖(PartialFunctionalDependency)于X,记为XY。如果Y对X部分依赖,那么X中的“部分”就可以确定对Y的关联。从数据依赖观点来看,X中存在冗余属性。
5.2.2函数依赖的分类(3)传递函数依赖定义5.4
若X→Y,Y→Z,,且YX,则称Z传递函数依赖(TransitiveFunctionalDependency)于X。
注意:若X不函数依赖于Y,意味着X与Y不是一一对应的;否则Z就是直接函数依赖于X,而不是传递依赖于X。
5.2.2函数依赖的分类完全、部分和传递函数依赖图示5.2.3函数依赖与数据冗余
根据函数依赖的定义,以及对部分函数依赖和传递函数依赖的分析可知,部分函数依赖存在冗余属性,而传递依赖反映出属性间的间接依赖,是一种弱数据依赖。这是关系数据库产生数据冗余的主要原因。5.2.3函数依赖与数据冗余【例5.2】设有关系模式R(U),其中U为属性集{客户编号,客户姓名,联系电话,微信号,商品编号,商品名称,品牌,单价,生产厂家,厂家地址,订购时间,数量}。该关系模式具有唯一候选码(客户编号,商品编号,订购时间),此时各个属性间的关系如图所示。
该关系模式中的部分与传递函数依赖,都会产生数据冗余。要消除数据冗余以及由数据冗余带来的数据更新异常现象,就要处理好部分和传递函数依赖。5.3范式5.3.1关系模式和码5.3.2基于函数依赖的范式*5.3.3多值依赖与4NF5.3范式20世纪70年代初,E.F.Codd等人提出了范式的概念,将属性间的数据依赖关系满足给定约束条件的关系模式称为范式(NormalForm);将属性之间的数据依赖关系按级别划分,如果一个关系模式属性之间的数据依赖关系满足某一级别,则称该关系模式为对应类的范式。E.F.Codd等人将范式分为:第1范式~第3范式(1NF~3NF)、BCNF范式及第4范式(4NF),后来,又有学者在此基础上提出了第5范式(5NF)。
5.3范式范式的类别及各类范式之间的关系5.3.1关系模式和码定义5.5若关系模式R<U,F
>的一个或多个属性A1,A2,…,An的组合,可以函数决定该关系模式的所有属性,即满足
A1A2…An
U,则称A1,A2,…,An为关系模式R的候选码,简称码(Key)。
属性组合
A1A2…An
U,即符合码的“唯一性”和“最小性”两个特性。5.3.1关系模式和码定义5.6设X是关系模式R<U,F>的属性集,即
,若X包含R<U,F>的候选码,则称X为超码(SuperKey)。例如,GoodsInfo关系的候选码是“商品编号”,则(商品编号,商品名称)为GoodsInfo关系的超码。5.3.2基于函数依赖的范式
关系模式最基本的范式是第一范式。如果关系模式R<U,F
>中的每一个属性都是不可再分的,那么该关系模式属于第一范式(1NF),记为R∈1NF。第一范式要求关系模式的每个属性是原子的。通常,关系数据库管理系统要求数据库的每一个关系模式必须属于1NF。与函数依赖相关的关系模式范式主要有第二范式(2NF)、第三范式(3NF)和BC范式(BCNF)。
5.3.2基于函数依赖的范式(1)第二范式(2NF)定义5.7
对于关系模式R<U,F>,若R∈1NF,且每一个非主属性完全函数依赖于码,则R是第二范式的,记为R∈2NF。
注意:2NF要求非主属性不能部分依赖于码。5.3.2基于函数依赖的范式(1)第二范式(2NF)【例5.3】设有关系模式R(U),其中U为属性集{客户编号,客户姓名,联系电话,商品编号,商品名称,单价,生产厂家,厂家地址,订购时间,数量}。该关系模式具有唯一候选码(客户编号,商品编号,订购时间)。
在该模式中,存在非主属性对码的部分函数依赖:客户编号→客户姓名,客户编号→联系电话,客户编号→微信号,商品编号→商品名称,商品编号→品牌,商品编号→单价,商品编号→生产厂家,商品编号→厂家地址,因此该关系模式不属于第二范式。分解为以下三个关系模式:CInfo(客户编号,客户姓名,联系电话)GInfo(商品编号,商品名称,生产厂家,厂家地址,单价)Order(客户编号,商品编号,订购时间,数量)
三者均为2NF的5.3.2基于函数依赖的范式(2)第三范式(3NF)定义5.8
在关系模式R<U,F
>中,若不存在这样的码X、属性组Y和非主属性Z(Z不包含于Y),使得X→Y,Y→Z(这里XY)成立,则称R<U,F
>是第三范式的,记为R∈3NF。
注意:X→Y不满足3NF的约束条件分为两种情况:①Y是非主属性,而X是码的真子集,在此情况下,非主属性Y部分函数依赖于码;②
Y是非主属性,X既不包含码,也不是码的真子集。
5.3.2基于函数依赖的范式(2)第三范式(3NF)由分析可知:若R∈3NF,则R中的每一个非主属性既不部分依赖于码,也不传递依赖于码。【推论】对于关系模式R<U,F
>,若R<U,F
>∈2NF,且每个非主属性都不传递依赖于码,则R<U,F
>∈3NF。5.3.2基于函数依赖的范式(2)第三范式(3NF)【例5.4】
对例5.3中分解后的关系模式GInfo(商品编号,商品名称,品牌,生产厂家,厂家地址,单价)进行分析,该模式最高属于第几范式?分析:在GInfo模式中,存在函数依赖:商品编号→生产厂家,生产厂家→厂家地址,因此,“厂家地址”对码的依赖是传递函数依赖。所以,GInfo不是第三范式的。而该模式中不存在非主属性对码的部分函数依赖,故GInfo∈2NF。将GInfo分解为以下两个模式:GoodsInfo(商品编号,商品名称,生产厂家,单价)MFInfo(生产厂家,厂家地址)
这两个模式均为第三范式的。
5.3.2基于函数依赖的范式(2)第三范式(3NF)【例5.5】设有一个用于描述学生选课的关系模式SG<U,F>,U={SNO,SName,SDept,SSpec,CNO,Grade},各属性表示的含义为:SNO—学号,SName—姓名,SDept—所在系,SSpec—所学专业,CNO—课程号,Grade—课程成绩。关系SG的语义如下:①每个学生属于且仅属于一个系与一个专业。②每个学生选修的每门课程有且仅有一个成绩。③每个系有多个专业,一个专业属于且仅属于一个系。由上述语义,可得到函数依赖集F如下:F={
SNO→SName,SNO→SDept,SNO→SSpec,
SSpec→SDept,(SNO,CNO)→Grade}关系模式SG的候选码为(SNO,CNO),显然SG存在非主属性SName、SDept、SSpec对码的部分函数依赖,因此SG不属于2NF。5.3.2基于函数依赖的范式(2)第三范式(3NF)【例5.5】(续)将关系模式SG分解为如下两个模式:S(SNO,SName,SDept,SSpec)SCG(SNO,CNO,Grade)
模式SCG的候选码为(SNO,CNO),存在函数依赖集F2={(SNO,CNO)→Grade}。可见SCG已是3NF的。模式S的候选码为SNO,存在函数依赖集F1={SNO→SName,SNO→SDept,SNO→SSpec,SSpec→SDept}。其中存在非主属性SSpec对码SNO的传递函数依赖,可见S是2NF的,但不是3NF的。再将其分解为如下两个模式:Stu(SNO,SName,SSpec)Dept(SDept,SSpec)
模式Stu的候选码为SNO、Dept均是3NF的。5.3.2基于函数依赖的范式非3NF的三种情形(a)存在X→Y,其中Y是非主属性,X是K的真子集。这实际上是一种基于部分依赖的传递依赖。(b)存在X→Y,其中Y是非主属性,而X既非超码,又非K的真子集,但X与K的交集非空。(c)存在X→Y,其中Y是非主属性,而X既非超码,又非K的真子集,且X与K的交集为空。5.3.2基于函数依赖的范式(3)BC范式(BCNF)定义5.10
设关系模式R<U,F
>∈1NF,若X→Y,时,X必含有码,则R<U,F
>是BC范式的,记为R<U,F
>∈BCNF。即关系模式
R<U,F
>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。BCNF范式因由Boyce和Codd共同提出而得名,BCNF范式又称为修正的第三范式或扩充的第三范式。5.3.2基于函数依赖的范式(3)BC范式(BCNF)【例5.7】设有关系模式SCT<U,F
>,用于描述学生、课程及教师三实体之间的联系U={SNO,CNO,TName},各属性表示的含义为:SNO—学号,CNO—课程号,TName—教师姓名。关系SCT的语义如下:①每位教师不重名。②每位教师仅上一门课。③每门课程可由若干教师讲授。④学生选定某门课程后,教师即唯一确定。函数依赖集F如下:F={(SNO,CNO)→TName,(SNO,TName)→CNO,TName→CNO}5.3.2基于函数依赖的范式(3)BC范式(BCNF)【例5.7】(续)
关系模式SCT的候选码为(SNO,CNO),(SNO,TName)。在该模式中不存在非主属性,因此必有SCT∈3NF。但是SCT不属于BCNF,因为在该模式中存在函数依赖TName→CNO,其决定因素TName不包含任何候选码。若一个模式为3NF但非BCNF,仍可能存在异常。将SCT模式分解为以下两个模式:ST(SNO,TName)TC(TName,CNO)
模式ST的候选码为SNO,存在函数依赖集F={SNO→TName}。已是BCNF的。模式TC的候选码为TName,存在函数依赖集F={TName→CNO}。已是BCNF的。
*5.3.3多值依赖与4NFBCNF是基于函数依赖的最高范式,但不是数据库模式设计的最高范式。如果一个数据库模式中的每个关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,消除了插入和删除异常;但属性之间可能还存在多值依赖,多值依赖会导致不必要的数据冗余和操作异常。
*5.3.3多值依赖与4NF【例5.8】设有一个课程安排关系CTB(CName,TName,Book),各属性表示的含义为:CName—课程名,TName—教师姓名,Book—参考书。关系CTB的语义如下:①每位教师可讲授多门课程。②每门课程可采用多种参考书。设CTB有关的数据如下表所示:CNameTNameBook数据结构张林李平赵红
数据结构教程数据结构
数据库系统张林周静数据库系统概论数据库教程数据库技术与应用
*5.3.3多值依赖与4NF【例5.8】(续)将前表所示的数据整理为一张规范化的二维表:CNameTNameBookCNameTNameBook数据结构张林数据结构教程数据库系统张林数据库系统概论数据结构张林数据结构数据库系统张林数据库教程数据结构李平数据结构教程数据库系统张林数据库技术与应用数据结构李平数据结构数据库系统周静数据库系统概论数据结构赵红数据结构教程数据库系统周静数据库教程数据结构赵红数据结构数据库系统周静数据库技术与应用*5.3.3多值依赖与4NF【例5.8】(续)将前表所示的数据整理为一张规范化的二维表:关系模式CTB(CName,TName,Book)的码为(CName,TName,Book),即CTB是全码的,所以CTB∈BCNF;但从表中数据看,该关系是高度数据冗余的。这种数据冗余同样会带来更新操作的问题。例如:
若“数据库系统”课程增加一名授课教师王荣,则必须插入三个元组(数据库系统,王荣,数据库系统概论)、(数据库系统,王荣,数据库教程)、(数据库系统,王荣,数据库技术与应用)。
同样,某门课程要去掉一位授课教师,或去掉一本参考书,都必须删除多个元组。*5.3.3多值依赖与4NF【例5.8】(续)分析CTB模式,可发现其中属性集{CName}与{TName}、{CName}与{Book}之间存在着一定的数据依赖关系:当{CName}的一个值确定以后,{TName}就有一组值与之对应;{Book}也有一组值与之对应。并且,属性集{TName}与{Book}也有联系,这种联系是通过{CName}建立起来的间接联系。表现为:当{CName}的一个值确定以后,它所对应的一组{TName}值与{Book}(=U
{CName}
{TName})无关。例如,当取定{CName}的一个值为“数据结构”时,它对应的一组{TName}值为{张林,李平,赵红},而与“数据结构”课程选用的参考书(即U
{CName}
{TName})无关。
*5.3.3多值依赖与4NF多值依赖定义5.10
设R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,且Z=U
X
Y。对于R的任何关系r,如果存在两个元组s、t,则必然存在两个元组u、v,使得u[X]=v[X],s[X]=t[X],u[Y]=t[Y],且u[Z]=s[Z],v[Y]=s[Y],且v[Z]=t[Z],即交换元组s、t在属性组Y上的值,得到的两个新元组u、v必在关系r中,则称Y多值依赖(MultivaluedDependency)于X,记为X→→Y。
*5.3.3多值依赖与4NF平凡多值依赖定义5.11
设R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,如果或X∪Y=U,则称X→→Y为平凡多值依赖。
*5.3.3多值依赖与4NF多值依赖性质①传递性如果X→→Y且Y→→Z,则X→→Z
Y。②对称性如果X→→Y且Z=U
X
Y,则X→→Z。③扩展律如果X→→Y且,则WX→→VY。④如果X→Y
,则X→→Y。该性质说明:函数依赖是多值依赖的特例。
*5.3.3多值依赖与4NF第四范式(4NF)定义5.12
设FD、MVD分别为定义在关系模式R<U,D>上的函数依赖集和多值依赖集,D=FD∪MVD,若R<U,D>∈1NF,且所有非平凡的多值依赖X→→Y,其决定因素X都含有码,则称R<U,D>是第四范式的,记为R<U,D>∈4NF。
*5.3.3多值依赖与4NF【例5.9】将例5.8中的CTB关系模式分解为4NF。分析:CTB模式中存在多值依赖CName→→TName,CName→→Book,它们是非平凡的多值依赖,但决定因素不包含码,所以CTB不属于4NF。将CTB分解为如下两个模式:CT(CName,Tname)TB(CName,Book)
关系模式CT和TB中分别只有CName→→TName和CName→→Book,它们都是平凡的多值依赖。因此,分解后的每个关系模式都属于4NF。5.4数据依赖公理系统5.4.1逻辑蕴涵5.4.2Armstrong公理系统5.4.3函数依赖集的闭包5.4.4最小依赖集5.4数据依赖公理系统将低级范式转化为高级范式的方法是对低级范式进行模式分解,而模式分解算法的理论基础是数据依赖的公理系统。Armstrong公理系统(Armstrong
saxiom)是函数依赖的一个有效而完备的公理系统。5.4.1逻辑蕴涵定义5.13
设有满足函数依赖集F的关系模式R<U,F>,对于R的任一关系r,若函数依赖X→Y都成立(即对于r中任意两元组t、s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴含X→Y,记为X→Y。
5.4.2Armstrong公理系统Armstrong公理系统是一套推理规则,是模式分解算法的理论基础用途求给定关系模式的码从一组函数依赖求得蕴含的函数依赖5.4.2Armstrong公理系统
关系模式R<U,F>有以下的推理规则:Al.自反律(Reflexivity):若Y
X
U,则X→Y为F所蕴含。A2.增广律(Augmentation):若X→Y为F所蕴含,且Z
U,则XZ→YZ为F所蕴含。A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。Armstrong公理系统5.4.2Armstrong公理系统Armstrong公理的导出规则根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由X→Y,X→Z,有X→YZ。(A2,A3)
伪传递规则:由X→Y,WY→Z,有XW→Z。(A2,A3)
分解规则:由X→Y及Z
Y,有X→Z。(A1,A3)5.4.3函数依赖集的闭包定义5.14
设有关系模式R(U,F),F逻辑蕴涵的函数依赖的全体称为F的闭包,记为F+。F+即从F出发,根据Armstrong公理系统可导出的函数依赖的全体。5.4.3函数依赖集的闭包定义5.15
设F为属性集U上的一组函数依赖,X
U,
XF+={A|X→A能由F根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F的闭包5.4.3函数依赖集的闭包求闭包的算法算法5.1
求属性集X(X
U)关于U上的函数依赖集F的闭包XF+。输入:X,F输出:XF+步骤:(1)令X(0)=X,i=0;(2)求B,这里B={A|(
V)(
W)(V→W
F∧V
X(i)∧A
W)};(3)X(i+1)=B∪X(i)(4)判断X(i+1)=X(i)是否成立?(5)若相等或X(i)=U,则X(i)就是XF+,算法终止。(6)若否,则i=i+l,返回第(2)步。5.4.3函数依赖集的闭包【例5.10】已知关系模式R<U,F>,其中:U={A,B,C,D,E};F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)F+
。解:设X(0)=AB;①计算X(1):逐一的扫描F集合中各个函数依赖,找左部为A,B或AB的函数依赖。得到两个:AB→C,B→D。于是X(1)=AB∪CD=ABCD。②因为X(0)≠X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到AB→C,B→D,C→E,AC→B,于是X(2)=X(1)∪BCDE=ABCDE。③因为X(2)=U,算法终止。所以(AB)F+=ABCDE。
5.4.4最小依赖集定义5.16
(两个函数依赖集等价)设有函数依赖集F、G,如果G+=F+,则称函数依赖集F与G互为覆盖,或称F与G等价。5.4.4最小依赖集定义5.17
(最小依赖集)如果函数依赖集F满足如下条件:①F中任一函数依赖的右部仅含有单一属性;②F中不存在这样的函数依赖X→A,使得F与F
{X→A}等价;③
F中不存在这样的函数依赖X→A,X有真子集Z使得F与F
{X→A}∪{Z→A}等价。则称F为最小依赖集或最小覆盖,记为Fmin。5.4.4最小依赖集极小化过程定理5.1
每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。证明:采用构造性证明。依据定义分三步对F进行“极小化处理”,找出F的一个最小依赖集。(1)逐一检查F中各函数依赖FDi:X→Y,若Y=A1A2…Ak,k>2,则用{X→Aj|j=1,2,…,k}来取代X→Y。(2)逐一检查F中各函数依赖FDi:X→A,令G=F
{X→A},若A
XG+,则从F中去掉此函数依赖。(3)逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,逐一考察Bi(i=l,2,…,m),若A
(X
Bi)F+,则以X
Bi取代X。根据定义,最后剩下的F就是最小依赖集。5.4.4最小依赖集【例5.13】设函数依赖集F={A→B,B→A,B→C,A→C,C→A}。以下的Fm1、Fm2都是F的最小依赖集:
Fm1={A→B,B→C,C→A}
Fm2={A→B,B→A,A→C,C→A}
可见,F的最小依赖集Fmin不一定是唯一的,它与对各函数依赖FDi
及X→A中X各属性的处置顺序有关。
5.4.4最小依赖集【例5.14】设有关系模式R<U,F>,U={A,B,C,D,E,S,H},F={ABH→C,A→D,C→E,S→AD,E→S,BH→E},求F的最小覆盖Fmin。解:(1)对各函数依赖的右部进行单一化处理后,得到F如下:ABH→C,A→D,C→E,S→A,S→D,E→S,BH→E
5.4.4最小依赖集【例5.14】(续)(2)去除F中多余的函数依赖。考察F中的各个函数依赖:对于ABH→C,设G=F-{ABH→C},因为(ABH)G+={A,B,H,D,E,S},C(ABH)G+,故ABH→C不多余。采用同样的方法可得A→D,C→E,S→A也不多余。对于S→D,设G=F-{S→D},因为SG+={S,A,D},DSG+,故S→D多余,于是,令F=F-{S→D}。之后依据同样方法可判断E→S、BH→E均不是多余的函数依赖。这样,删除多余函数依赖后F如下:F={ABH→C,A→D,C→E,S→A,E→S,BH→E}5.4.4最小依赖集【例5.14】(续)(3)去除F中函数依赖左部多余的属性。考察F中的各个函数依赖:考察ABH→C,令G=F{ABH→C}∪{BH→C},因为(BH)G+={B,H,C,E,S,A},A∈(BH)G+,所以属性A是多余的,ABH→C与BH→C等价。由此得F如下:F={BH→C,A→D,C→E,S→A,E→S,BH→E}用同样方法可得:上述F中各函数依赖的左部无多余属性。此F即为最小函数依赖集Fmin。5.5模式分解5.5.1无损连接性5.5.2函数依赖保持*5.5.3模式分解算法5.5模式分解模式分解的定义定义5.18
关系模式R<U,F
>的一个分解是指
={R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn
>},其中:U=,UiUj,i≠j,
i,j=1,2,…,n;Fi是F在Ui上的投影。5.5模式分解模式分解的定义定义5.19
数据依赖集{X→Y|X→Y∈F+∧XYUi}的一个覆盖Fi称作F在属性子集Ui上的投影。
把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的。只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义。三种模式分解的等价定义分解具有无损连接性分解要保持函数依赖分解既要保持函数依赖,又要具有无损连接性5.5模式分解5.5.1无损连接性无损连接性的定义定义5.20
关系模式R<U,F>的一个分解ρ={R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn
>},若对于R中的每一个关系实例r,都有:则称关系模式R的这个分解
具有无损连接性(LosslessJoin)。5.5.1无损连接性【例5.15】设有关系模式SL<U,F>,U={SNo,Sdept,Sloc},各属性表示的含义为SNo—学号,Sdept—所在系,Sloc—宿舍楼号,F={SNo→Sdept,Sdept→Sloc,SNo→Sloc}。(1)将SL分解为下面两个关系模式:NL(SNo,Sloc)DL(Sdept,Sloc)这不是一个无损连接分解。
关系实例r分解后的关系S#SdeptSlocS#Sloc20051001电子A楼20051001A楼SdeptSloc20052001计算机B楼20052001B楼电子A楼20053003自动化C楼20053003C楼计算机B楼20052002计算机B楼20052002B楼自动化C楼20055005软件工程B楼20055005B楼软件工程B楼5.5.1无损连接性【例5.15】(续)(2)将SL分解为下面两个关系模式:SD(SNo,Sdept)NL(SNo,Sloc)这是一个无损连接分解。S#SdeptS#Sloc20051001电子20051001A楼20052001计算机20052001B楼20053003自动化20053003C楼20052002计算机20052002B楼20055005软件工程20055005B楼5.5.1无损连接性算法5.2判别一个二元分解的无损连接性。输入:
(1)关系模式R<U,F>,U={A1,A2,…,An}。
(2)设F为最小依赖集,F={FD1,FD2,…,FDt},记FDi为Xi→As。
(3)R<U,F>的一个分解
={R1<U1,F1>,R2<U2,F2>}输出:输出判别结果。步骤:若F+中至少存在如下函数依赖中的一个:(1)U1∩U2→U1-U2(2)U1∩U2→U2-U1则
是R的无损分解。否则,
不是R的无损分解。5.5.1无损连接性算法5.3判别一个分解的无损连接性。输入:
(1)关系模式R<U,F>,U={A1,A2,…,An}。
(2)设F为最小依赖集,F={FD1,FD2,…,FDt},记FDi为Xi→As。
(3)R<U,F>的一个分解
={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk
>}输出:输出判别结果。5.5.1无损连接性算法5.3判别一个分解的无损连接性。步骤:
(1)构造一张k行n列的表。每列对应一个属性,每行对应分解中的一个关系模式。若属性Aj属于关系模式Ri对应的属性集Ui,则在第j列第i行交叉处填上aj,否则填上bij。
(2)对F中的每个FDi:Xi→As做如下操作:找到X所对应的列中具有相同符号的那些行,考察这些行中第s列的元素,若其中有as,则全部改为as;否则全部改为bms,m是这些行的行号最小值。注意:若某个bls被更改为as,则该表的s列中所有的bls符号均应作相应修改。
(3)检查表中是否有一行全为a1,a2,…,an,若有,则
具有无损连接性,算法终止。否则,检查表中数据是否有变化,若有变化,则转第(2)步;否则,
不具有无损连接性,算法终止。5.5.1无损连接性【例5.16】设有关系模式R<U,F>,U={A,B,C,D,E},F={A→C,B→C,C→D,
DE→C,CE→A}。对该模式的一个分解
={R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE)},
是否为无损连接分解?解:(1)构造初始表。
ABCDER1a1b12b13a4b15R2a1a2b23b24b25R3b31a2b33b34b35R4b41b42a3a4a5R5a1b52b53b54a55.5.1无损连接性【例5.16】(续)(3)对F中的每个函数依赖进行考察,修改表格。
ABCDER1a1b12b13a4b15R2a1a2b13b24b25R3b31a2b33b34a5R4b41b42a3a4a5R5a1b52b13b54a5(第1次修改结果)5.5.1无损连接性【例5.16】(续)(2)对F中的每个函数依赖进行考察,修改表格。(第2次修改结果)
ABCDER1a1b12b13a4b15R2a1a2b13b24b25R3b31a2b13b34a5R4b41b42a3a4a5R5a1b52b13b54a55.5.1无损连接性【例5.16】(续)(2)对F中的每个函数依赖进行考察,修改表格。(第3次修改结果)
ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3b31a2b13a4a5R4b41b42a3a4a5R5a1b52b13a4a55.5.1无损连接性【例5.16】(续)(2)对F中的每个函数依赖进行考察,修改表格。(第4次修改结果)
ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3b31a2a3a4a5R4b41b42a3a4a5R5a1b52a3a4a55.5.1无损连接性【例5.16】(续)(2)对F中的每个函数依赖进行考察,修改表格。(第5次修改结果)
ABCDER1a1b12b13a4b15R2a1a2b13a4b25R3a1a2a3a4a5R4a1b42a3a4a5R5a1b52a3a4a55.5.2函数依赖保持定义5.21
关系模式R<U,F>的一个分解
={R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>},若F+=(∪Fi)+(i=1,2,…,n),则称该分解为保持函数依赖的分解
5.5.2函数依赖保持算法5.4判别一个分解是否保持函数依赖。
5.5.2函数依赖保持算法5.4判别一个分解是否保持函数依赖。
5.5.2函数依赖保持【例5.17】设有关系模式R<U,F>,U={W,X,Y,Z},F={W→X,X→Y,Y→Z,Z→W}。该模式的一个分解
={R1(WX),R2(XY),R3(YZ)},判断
是否保持函数依赖?
*5.5.3模式分解算法算法5.5将关系模式R<U,F>分解为3NF,且具有依赖保持性。输入:关系模式R<U,
F>,属性集U,函数依赖集的最小集F。
输出:R<U,
F>的分解
,各模式为3NF,且
具有依赖保持性。步骤:(1)对所有未在F中任何一个函数依赖中出现的属性,将其合并构成一个关系模式,将这些属性从U中去除。(2)若F中存在函数依赖X→Y,使得X∪Y=U,则
={XY},算法终止。(3)否则,将F中具有相同左部属性的函数依赖归为一组,每组组成一个关系模式。1、3NF分解*5.5.3模式分解算法【例5.18】设有关系模式R<U,
F
>,U={A,
B,
C,
D,
E},F={A→B,
C→D}。将R<U,
F>进行分解,使得每个模式都为3NF且具有依赖保持性。解:根据算法5.5进行分解。(1)F中满足步骤1的属性为E,将其构造为一个关系模式;(2)没有满足步骤2中条件的函数依赖,因此根据步骤3,将函数依赖A→B,C→D,各自分为一组,每组组成一个关系。故最终得到分解
={AB,
CD,
E}。*5.5.3模式分解算法算法5.6将关系模式R<U,F>分解为具有无损连接性且保持函数依赖的3NF。输入:
(1)关系模式R的属性集U;
(2)关系模式R的函数依赖集F(为最小集);
(3)关系模式R的主码K。输出:
R<U,F>的分解,各模式为3NF,分解具有无损连接性和依赖保持性。1、3NF分解*5.5.3模式分解算法步骤:设初始模式集合
为空。(1)对F按具有相同左部的函数依赖,采用合并规则将其合并。处理后得到的函数依赖集仍记为F。(2)在F中,对每个函数依赖X→Y,构造关系模式Rk<Uk,Fk>,其中Uk由X的所有属性组成,Fk为X在Uk上的投影。将Rk<Uk,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效能家庭清洁与维护手册
- 8.2.3多项式与多项式相乘(教学设计) 沪科版数学七年级下册
- 业务流程自动化执行模板与脚本库
- 墙面软包专项施工方案
- 2025-2026学年古诗成语教案简单
- XX工贸企业环境保护规划制度
- 企业资金管理与预算编制标准模板
- 经济收益保障承诺书5篇
- 项目实施质量保障责任承诺书6篇
- 请求物流合作意向书9篇范本
- 2025中证信息技术服务有限责任公司招聘16人笔试备考试题附答案
- 8.3 新疆的地理概况与开发保护 课件 2025-2026学年湘教版地理八年级下册
- 高速路养护施工安全培训课件
- 2025年工业CT在军事弹药失效分析报告
- PET吹瓶工艺操作指导书
- DB4419∕T 30-2025 高层、超高层民用建筑匹配消防救援能力建设规范
- 2025浙江宁波市水务环境集团有限公司招聘2人笔试参考题库附带答案详解(3卷)
- 购猫合同模板(3篇)
- DRG政策下医疗设备成本管理策略
- 三农电子商务创新创业项目
- 2025年教职人员个人总结
评论
0/150
提交评论