版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统原理
与应用技术
主讲:陈漫红chmh1@263.net北京联合大学师范学院电气信息系第5章数据库规范化理论
5.1数据依赖5.2函数依赖5.3关系规范化5.4关系模式的分解原则5.5本章小结5.1数据依赖
5.1.1数据依赖
5.1.2数据依赖对关系模式的影响
5.1.1数据依赖数据库设计的一个最基本的问题是怎样建立一个好的数据库模式,也就是给出一组数据,如何构造一个合理的数据模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都具有较好的性能。
F.E.
Codd提出并发展了一套关系数据库设计理论--关系的规范化理论,根据现实世界存在的数据依赖进行关系模式的规范化处理,从而得到一个好的数据库设计。5.1.2数据依赖对关系模式的影响比如,描述一个学生的关系,可以有学号(Sno)、姓名(Sname)、所在系(Sdept)等几个属性。由于一个学号只对应一个学生,一个学生只在一个系。因而当“学号”值确定之后,姓名及其所在系的值也就被唯一地确定了。属性间的这种依赖关系类似于数学中的函数。因此说Sno函数决定Sname和Sdept,或者说Sname和sdept函数依赖于Sno,记做Sno→Sname,Sno→Sdept。
5.1.2数据依赖对关系模式的影响假设有描述学生选课和住宿情况的关系模式:S_L_C(Sno,Sdept,Sloc,Cno,Grade)
此关系模式存在什么问题?S_L_C模式的数据示例如下表所示:SnoSdeptSLOCCnoGrade0912101计算机2公寓DB800912101计算机2公寓OS850921101信息1公寓C900921101信息1公寓DS
840921102信息1公寓OS
785.1.2数据依赖对关系模式的影响数据冗余问题:学生往往要选多门课,则Sno,Sdept,SLOC会重复出现很多次。数据更新问题:如果某学生从计算机系转到信息系,那么不但要修改此学生的SDEPT列的值,而且还要修改Sloc列的值,从而使修改复杂化。
数据插入问题:例如当某学生尚未选课前,虽然已知他的学号、姓名,仍无法将他的信息插入关系S_L_C中,这是因为S的主码是(SNO,CNO),CNO为“空”值时,插入是禁止的。数据删除问题:假定学生周明不再选修C1课程了,本应删去C,但C是主码的一部分,要删,必须将整个元组一起删去,这样,有关周明的其它信息就丢失了。若想保留周明的其它信息,就只好不删。5.2函数依赖5.2.1函数依赖的概念5.2.2码
5.2.1函数依赖的概念定义:如果有一个关系模式R(A1,A2,…,An),X和Y为{A1,A2,…,An}的子集,那么对于关系R中的任意一个X值,都只有一个Y值与之对应,则称X函数决定Y,或Y函数依赖于X。 例:Student(Sno,SName,Sdept,Sage)Sno→SName,Sno→Sdept,Sno→Sage例:
SC(Sno,Cno,Grade)(Sno,Cno)→Grade5.2.1函数依赖的概念一些术语和符号1.如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖。如不作特别说明,我们总是讨论非平凡函数依赖。2.如果Y不函数依赖于X,则记作X—/→Y。3.如果X→Y,则称X为决定因子。4.如果X→Y,并且Y→X,则记作X←→Y。5.2.1函数依赖的概念5.如果X→Y,并且对于X的一个任意真子集X’都有X’—/→Y,则称Y完全函数依赖于X,记作:如果X’→Y成立,则称Y部分函数依赖于X,记作:6.如果X→Y(非平凡函数依赖,并且Y—/→X)、Y→Z,则称Z传递函数依赖于X。记作:ZX5.2.2码1候选码
设K为关系模式R<U,F>中的属性或属性组合。若KU,则K称为R的一个候选码(candidatekey)。2主码若关系模式R有多个候选码,则选定其中的一个做为主码(primarykey)。每个关系必定有且仅有一个主码。3全码候选码为整个属性组,称为全码(all-key)。4主属性与非主属性在关系模式R<U,F>中,包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性。5外码
用于在关系表之间建立关联的属性(属性组)称为外码。示例例如:关系SC(SNO,CNO,Grade)中,SNO——学号,CNO——课程号,Grade——成绩 候选码:(SNO,CNO),也为主码主属性:SNO,CNO,非主属性:Grade例如:R(P,W,A),P――演奏者,W――作品,A――听众 语义:一个演奏者可演奏多个作品,某一作品可被多个演奏者演奏;听众也可欣赏不同演奏者个不同作品。 候选码:(P,W,A)――全码(演奏者、作品、听众一场音乐会)例如:关系student(Sno,Sname,Ssex,Sage,Sdept)中,有Sno→Ssex,Sno→Sage,Sno→Sdept,Sno←→Sname,(若无人重名),所以候选码为:sno和sname,主码为sno;关系SC(Sno,Cno,Grade)中的Sno为student的外码。5.3关系规范化5.3.1第一范式(1NF)5.3.2第二范式(2NF)5.3.3第三范式(3NF)5.3.3BCNF范式5.3.4多值依赖与第四范式5.3.5规范化
5.3关系规范化关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的范式。规范化的理论是E.F.Codd首先提出的。他认为,一个关系数据库中的关系,都应满足一定的规范,才能构造出好的数据模式,Codd把应满足的规范分成几级,每一级称为一个范式(NormalForm)。例如满足最低要求,叫第一范式(1NF);在1NF基础上又满足一些要求的叫第二范式(2NF);第二范式中,有些关系能满足更多的要求,就属于第三范式(3NF)。后来Codd和Boyce又共同提出了一个新范式:BC范式(BCNF)。以后又有人提出第四范式(4NF)和第五范式(5NF)。范式的等级越高,应满足的条件也越严。5.3.1第一范式(1NF)关系,作为一张二维表,对它有一个最起码的要求:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。这一限制是在关系的基本性质中提出的,任何关系都必须遵守。5.3.1第一范式(1NF)例如关系模式:SLC(Sno,Sdept,Sloc,Cno,Grade)其中Sloc为学生住处,假设每个系的学生住在同一地方。SLC的码为(Sno,Cno)。函数依赖包括:
(Sno,Cno)完全→Grade
Sno→Sdept
(Sno,Cno)部分→Sdept
Sno→Sloc
(Sno,Cno)部分→Sloc
Sdept→Sloc(因为每个系只住一个地方)显然SLC满足第一范式。5.3.1第一范式(1NF)
SLC关系存在以下4个问题:①插入异常。②删除异常。③数据冗余度大。④修改复杂:。
因此,SLC不是一个好的关系模式。5.3.2第二范式(2NF)第二范式:如果R(U,F)∈1NF,并且R中的每个非主属性都完全函数依赖于主码,则R(U,F)∈2NF把SLC分解为两个关系模式:
SC(Sno,Cno,Grade)
SL(Sno,Sdept,Sloc)其中SC的码为(Sno,Cno),SL的码为Sno。
显然,在分解后的关系模式中,非主属性都完全函数依赖于码了。从而使上述4个问题在一定程度上得到了解决。存在的问题但是将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。也就是说,属于2NF的关系模式并不一定是一个好的关系模式。
例如,2NF关系模式SL(Sno,Sdept,Sloc)中有下列函数依赖:
Sno→Sdept
Sdept→Sloc
Sno→Sloc
我们看到,Sloc传递函数依赖于Sno,即SL中存在非主属性对码的传递函数依赖。SL关系中仍然存在插入异常、删除异常、数据冗余度大和修改复杂的问题。分解办法首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。然后,将依赖于这些主码的属性放置到相应的表中。最后,去掉只由主码的子集构成的表。分解示例对于S-L-C表,首先分解为如下形式的三张表:
S-L(Sno,…)
C(Cno,…)
S-C(Sno,Cno,…)然后,将依赖于这些主码的属性放置到相应的表中
S-L(Sno,Sdept,Sloc)
C(Cno)
S-C(Sno,Cno,Grade)最后,去掉只由主码的子集构成的表,最终分解为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)存在问题数据冗余:一个系有多少个学生就有多少个重复的Sdept和SLOC;插入异常:当新建一个系时,若还没有招收学生,则无法插入;5.3.3第三范式(3NF)定义:如果R(U,F)∈2NF,并且所有非主属性都不传递依赖于主码,则R(U,F)∈3NF。关系模式SL出现上述问题的原因是Sloc传递函数依赖于Sno。为了消除该传递函数依赖,可以采用投影分解法,把SL分解为两个关系模式:SD(Sno,Sdept)SnoSdeptSD∈3NFDL(Sdept,Sloc)SdeptSloc
DL∈3NF其中SD的码为Sno,DL的码为Sdept。
显然,在分解后的关系模式中既没有非主属性对码的部分函数依赖也没有非主属性对码的传递函数依赖,在一定程度上解决了上述4个问题。由于3NF关系模式中不存在非主码属性对主码的部分依赖和传递依赖关系,因而在数据库设计中,一般要求达到3NF.5.3.4BCNF范式BCNF也称Boyce-Codd范式,它是3NF的进一步规范化,其限制条件更严格。例:关系模式:CSZ(City,Street,Zip)语义:城市和街道可以决定邮政编码,邮政编码可以决定城市。候选码:(City,Street),(Street,Zip)F:{(City,Street)→Zip,Zip→City}即城市、街道决定邮政编码,邮政编码决定城市,可用图表示如下:5.3.4BCNF范式容易看出,(CITY,STREET)和(STREET,ZIP)是两个候选码,CITY,STREET,ZIP都是主属性,没有非主属性,CSZ是3NF.但函数依赖ZIP→CITY的决定因素ZIP不包含码,所以CSZ不是BCNF存在的问题:插入异常,删除异常。若无街道信息,则一个邮政编码是哪个城市中的邮政编码的信息无法存在数据库中。若将CSZ分解为两个关系模式:
ZC(ZIP,CITY) SZ(STREET,ZIP)主要是存在主属性对非码的函数依赖,产生BCNF。5.3.4BCNF范式R∈1NF,且能决定其它属性取值的属性(组)必定包含码,则其是BCNF如果一个关系的每个决定因素都是候选码,则其是BCNF如果一个关系的每个函数依赖的左部都是候选码,则其是BCNF如果R∈3NF,并且不存在主属性对非主属性的函数依赖,则其是BCNF5.3.4BCNF范式由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:(1)所有非主属性对每一个码都是完全函数依赖。(2)所有的主属性对每一个不包含它的码,也是完全函数依赖。(3)没有任何属性完全函数依赖于非码的任何一组属性。[例如]关系模式C(CNO,CNAME,PCNO),它只有一个码CNO,这里没有任何属性对CNO部分依赖或传递依赖,所以C是3NF。同时C中CNO是唯一的决定因素,所以C是BCNF。又例如关系模式S(Sno,SName,SDept,SAGE)假定SName也具有唯一性,则S就有两个码,这两个码都由单个属性组成,彼此不相交。其他属性不存在对码的传递依赖与部分依赖,所以S是3NF,同时S中除Sno,SName外没有其他决定因素,所以S也属于BCNF。BCNF和3NF的关系若R∈BCNF,则R∈3NF若R∈3NF,则R不一定属于BCNF[例如]关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)则(S,J)P;(J,P)S所以(S,J)与(J,P)都可作为候选码.这个关系模式中显然没有属性对码传递依赖或部分依赖,所以SJP是3NF,而且除了(S,J)与(J,P)以外没有其他决定因素,所以SJP是BCNF.5.3.5多值依赖与第四范式例:学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。我们可以用一个非规范化的关系来表示教员T,课程C和参考书B之间的关系假设该关系如图所示:该关系可用二维表如表所示:课程C教师T参考书B数学张军数学分析数学张军高等代数数学张军微分方程数学李斯数学分析数学李斯高等代数数学李斯微分方程物理王平普通物理学物理王平光学原理物理王平普通物理学物理何强光学原理物理陈明普通物理学物理陈明光学原理………多值依赖Teach具有唯一侯选码(C,T,B),即全码,因而Teach∈BCNF。但Teach模式中存在一些问题。①数据冗余度大:②增加操作复杂:③删除操作复杂:④修改操作复杂:
BCNF的关系模式Teach之所以会产生上述问题,是因为参考书的取值和教师的取值是彼此独立毫无关系的,它们都只取决于课程名。也就是说,关系模式Teach中存在一种称之为多值依赖的数据依赖。多值依赖1、多值依赖设R(U)是一个属性一个关系模式,X,Y和Z是U的子集,并且Z=U-X-Y,多值依赖X→→Y成立当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖。否则称X→→Y为非平凡的多值依赖。多值依赖在Teach关系中,每个(C,B)上的值对应一组T值,而且这种对应与B无关。例如,(C,B)上的一个值(物理,光学原理)对应一组T值{李勇,王军},这组值仅仅决定于课程C上的值,也就是说对于(C,B)上的另一个值(物理,普通物理学),它对应的一组T值仍是{李勇,王军},尽管这时参考书B的值已经改变了。因此T多值依赖于C,即C→→T。多值依赖也可以形式化地定义如下:在关系模式R(U)的任一关系r中,如果对于任意两个元组t,s有t[X]=s[X],就必存在元组w,v∈r(w和v可以与s和t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z],即交换s,t元组的Y值所得的两个新元组必在r中,则称Y多值依赖于X,记为X→→Y。其中X和Y是U的子集,Z=U-X-Y。多值依赖多值依赖具有下列性质:①多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。例如,在关系模式Teach(C,T,B)中,已经知道C→→T。根据多值依赖的对称性,必然有C→→B。②多值依赖具有传递性。即若X→→Y,Y→→Z,则X→→Z→→Y。③函数依赖可以看作是多值依赖的特殊情况。即若X→Y,则X→→Y。这是因为当X→Y时,对X的每一个值x,Y有一个确定的值y与之对应,所以X→→Y。④若X→→Y,X→→Z,则X→→YZ。⑤若X→→Y,X→→Z,则X→→Y∩Z。⑥若X→→Y,X→→Z,则X→→Y-Z,X→→Z-Y。⑦多值依赖的有效性与属性集的范围有关。如果X→→Y在U上成立,则在W(XYWU)上一定成立;但X→→Y在W(WU上)成立,在U上并不一定成立。这是因为多值依赖的定义中不仅涉及属性组X和Y,而且涉及U中其余属性Z。一般地,如果R的多值依赖X→→Y在W(WU)上成立,则称X→→Y为R的嵌入型多值依赖。但是函数依赖X→Y的有效性仅决定于X和Y这两个属性集的值,与其他属性无关。只要X→Y在属性集W上成立,则X→Y在属性集U(WU)上必定成立。⑧若多值依赖X→→Y在R(U)上成立,对于Y′Y,并不一定有X→→Y′成立。但是如果函数依赖X→→Y在R上成立,则对于任何Y′Y均有X→Y′成立。第四范式(4NF)
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(YX),X都含有候选码,则R∈4NF。
4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根据定义,对于每一个非平凡的多值依赖X→→Y(YX),X都含有候选码,于是当然X→Y,所以4NF所允许的非平凡多值依赖实际上是函数依赖。
显然,如果一个关系是4NF,则必为BCNF。5.3.5规范化
从以上讨论和引例可以看出,关系模式的规范化过程,就是通过关系的投影分解逐步提高关系范式等级的过程。从1NF到BCNF,其过程如下图所示:3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。规范化举例设有关系模式:Student(学号,姓名,导师号,导师名,课程号,课程说明,成绩)语义:一名学生只有一个导师,学生可选多门课。将其规范化成3NF规范化举例1.此表是1NF,其函数依赖为: 学号p→姓名,学号p→导师号,学号p→导师名,课程号p→课程说明,(学号,课程号)→成绩主码为(学号,课程号)存在部分函数依赖关系,不是2NF,首先将其分解为2NF。学生(学号,姓名,导师号,导师名),课程(课程号,课程说明),成绩(学号,课程号,成绩)均为2NF规范化举例2.判是否为3NF“学生”表不是3NF,其函数依赖为:学号→姓名,学号→导师号,导师号p→导师名,∴学号传递→导师名消除依赖于决定者的属性,把它们放在一个单独的表中,得到:学生(学号,姓名,导师号),导师(导师号,导师名)关系模式规范化应遵循以下原则:(1)关系模式进行无损连接分解。关系模式分解过程中数据不能丢失或增加,必须把全局关系模式中的所有数据无损地分解到各个子关系模式中,以保证数据的完整性。(2)合理选择规范化程度。考虑到存取效率,低级模式造成的冗余度很大,既浪费了存储空间,又影响了数据的一致性,因此希望一个子模式的属性越少越好,即取高级范式;若考虑到查询效率,低级范式又比高级范式好,此时连接运算的代价较小,这是一对矛盾,所以应根据情况,合理选择规范化程度。(3)正确性与可实现性原则。关系模式规范化的步骤规范化程度过低的关系可能会存在插入异常、删除异常、修改复杂、数据冗余等问题,需要对其进行规范化,转换成高级范式。但这并不意味着规范化程度越高的关系模式就越好。在设计数据库模式结构时,必须以现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。即上面的规范化步骤可以在其中任何一步终止。5.4关系模式的分解原则
模式分解要满足:模式分解具有无损连接性;模式分解能够保持函数依赖。
无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。
保持函数依赖分解是指在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。5.4关系模式的分解原则例:S-D-L(Sno,Dept,Loc)有函数依赖:Sno→Dept,Dept→Loc显然不是第三范式的。至少可以有三种分解方案,分别为:方案1:S-L(Sno,Loc),D-L(Dept,Loc)方案2:S-D(Sno,Dept),S-L(Sno,Loc)方案3:S-D(Sno,Dept),D-L(Dept,Loc)这三种分解方案得到的关系模式都是第三范式的,那么如何比较这三种方案的好坏呢?由此在将一个关系模式分解为多个关系模式时除了提高规范化程度之外,还需要考虑其他的一些因素。5.4关系模式的分解原则将一个关系模式R<U,F>分解为若干个关系模式R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>,意味着将存储在一张二维表r中的数据分散到了若干个二维表r1,r2,…,rn中。这样的分解应该不丢失信息,即能通过对关系r1,r2,…,rn的自然连接运算重新得到关系r中的所有信息。事实上,将关系r投影为r1,r2,…,rn时不会丢失信息,关键是对r1,r2,…,rn做自然连接时可能产生一些r中原来没有的元组,从而无法区别哪些元组是r中原来有的,即数据库中应该存在的数据,哪些是不应该有的。在这个意义上就丢失了信息。5.4关系模式的分解原则这三种分解方案是否都满足分解要求呢?假设此关系模式的数据如表所示,此关系用r表示。Sno
Dept
Loc
S01D1L1S02D2L2S03D2L2S04D3L15.4关系模式的分解原则若按方案1将S-D-L投影到S-L和D-L的属性上,得到如左边两个表所示的关系。做自然连接得到结果如右表所示。Sno
Loc
S01L1S02L2S03L2S04L1Dept
Loc
D1L1D2L2D3L1Sno
Dept
Loc
S01D1L1S01D3L1S02D2L2S03D2L2S04D1L1S04D3L1元组增加了,信息丢失了5.4关系模式的分解原则无损连接性将关系模式R<U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年低田闲置转让合同范本
- 2024年代理要账居间协议合同范本
- 2024年冲桩机出售转让合同范本
- 小学毕业数学总复习专题九解决问题第21课时比和比例实际问题课件
- 专家幼小衔接培训
- 2024安全生产法律法规知识培训
- 2024至2030年中国锁花片数据监测研究报告
- 【数学】指数函数图象与性质测试卷-2024-2025学年高一上学期数学人教A版(2019)必修第一册
- 2024家庭装修施工合同新
- 2024石材供货合同书
- 兽医流行病学病因推断
- 历史幽愤的现代回响——《记念刘和珍君》课堂实录
- 英语单词分类大全-20170913
- 信息技术课课堂教学评价表
- 施工进度计划书
- 35KV集电线路铁塔组立专项方案
- 不锈钢管规格表大全以及理论重量表大全
- 公司保密制度-附保密分类表
- 滑雪场管理手册
- 人类养生长寿的新方法---“中枢平衡”健体强身模式
- 胸外科技术操作规范
评论
0/150
提交评论