《自考_互联网数据库_第四章_关系数据库设计理论概要课件.ppt》由会员分享,可在线阅读,更多相关《自考_互联网数据库_第四章_关系数据库设计理论概要课件.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 关系数据库设计理论4.1 数据依赖4.2 范式4.3 关系模式的规范化4.1 数据依赖n 关系数据库是以关系模型为基础的数据库,它利用关系描述现实世界。n 一个关系既可以用来描述一个实体及其属性,也可用来描述实体间的一种联系。n 关系模式是用来定义关系的,一个关系数据库包含一组关系,定义这组关系的关系模式的全体就构成了该数据库的模式。24.1.1 关系模式中的数据依赖n 关系模式是对关系的描述,为了能够清楚地刻划出一个关系,它需要由五部分组成,即应该是一个五元组:R(U,D,DOM,F)其中:R 关系名 U 属性名集合 D 属性组U 中属性所来自的域 DOM 属性向域的映象集合 F 属
2、性间数据的关系集合3关系模式中的数据依赖续一n 属性间数据的依赖关系集合F 实际上就是描述关系的元组语义,限定组成关系的各个元组必须满足的完整性约束条件。n 在实际当中,这些约束或者通过对属性取值范围的限定,或者通过对属性值间的相互关连(主要体现值的相等与否)反映出来,后者称为数据依赖,它是数据库模式设计的关键。4关系模式中的数据依赖续二n 关系是关系模式在某一时刻的状态或内容。n 关系模式是静态的、稳定的,关系是动态的,不同时刻关系模式中的关系可能会有所不同,但它们都必须满足关系模式中数据依赖关系集合F 所指定的完整性约束条件。5关系模式中的数据依赖续三n 由于在关系模式R(U,D,DOM,
3、F)中,影响数据库模式设计的主要是U 和F,D 的DOM 对其影响不大,为了方便讨论,将关系模式简化为一个三元组:R(U,F)n 当且仅当U 上的一个关系r 满足F 时,r称为关系模式R(U,F)的一个关系。64.1.2 数据依赖对关系模式的影响n 数据依赖是通过一个关系中属性间值的相等与否体现出来的的数据间的相互关系。n 数据依赖的类型很多,其中最重要的是函数依赖(functional dependency,简记为FD)和多值依赖(multivalued dependency,简记为MVD)。7数据依赖对关系模式的影响续一n 函数依赖普遍地存在于现实生活中。例:学生关系中的学号(Sno)、姓
4、名(Sname)、所有系(Sdept)等几个属性,其中:SnoSname SnoSdept Sno 函数决定Sname 和Sdept;反之,Sname 和Sdept 函数依赖于Sno。8数据依赖对关系模式的影响续二n 例:描述学校的数据库 学号(Sno)、所在系(Sdept)、系主任名(Mname)、课程名(Cname)和成绩(Grade)。假设学校的数据库模式由一个单一的关系模式student 构成,即:student(Sno,Sdept,Mname,Cname,Grade)9数据依赖对关系模式的影响续三n 例:描述学校的数据库 由常识可知:(1)一个系有若干学生,但一个学生只属于一个系;(
5、2)一个系只有一名主任;(3)一个学生可以选修多门课程,每门课程有若干学生选修;(4)每个学生所学的每门课程都有一个成绩。10数据依赖对关系模式的影响续四n 该关系模式的属性集合为:U=Sno,Sdept,Mname,Cname,Graden 从上述事实可以得到属性组U 上的一组函数依赖F 为:F=SnoSdept,SdeptMname,(Sno,Cname)Grade11数据依赖对关系模式的影响续五12数据依赖对关系模式的影响续六n 只考虑函数依赖这一数据依赖,学生关系模式student 存在以下问题:数据冗余太大;更新异常;插入异常;删除异常。13数据依赖对关系模式的影响续七n 一个关系模
6、式之所以会产生上述问题,是由存在于模式中的某些数据依赖引起的。n 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。144.1.3 相关概念1.函数依赖【定义4.1】设R(U)是一个关系模式,U 是R 的属性集合,X 和Y 是U 的子集。对于R(U)的任意一个可能的关系r,如果r 中不存在两个元组,它们在X 上的属性值相同,而在Y 上的属性值不同,则称“X 函数确定Y”或“Y 函数依赖于X”,记作XY。15函数依赖续一n 对于函数依赖的几点说明:(1)函数依赖不是指关系模式R 的某个或某些关系实例满足的约束条件,而是指
7、R 的所有关系实例均要满足的约束条件。(2)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。例:姓名年龄16函数依赖续二n 对于函数依赖的几点说明:(3)数据库设计者可以对现实世界作强制的规定,例:“姓名年龄”。这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。17函数依赖续三(4)若XY,则X 称为这个函数依赖的决定属性集(Determinant)。(5)若XY,并且YX,则记为XY。(6)若Y 不函数依赖于X,则记为XY。18相关概念续二2.平凡函数依赖与非平凡函数依赖【定义4.2】在关系模式R
8、(U)中,对于U 的子集X 和Y,如果XY,但 Y X,则XY 是非平凡的函数依赖。若Y X,则称XY 称为平凡函数依赖。/19相关概念续三3.完全函数依赖与部分函数依赖【定义4.3】在关系模式R(U)中,如果XY,并且对于X 的任何一个真子集X,都有X Y,则称Y 完全函数依赖于X,记作X Y。若XY,但Y 不完全函数依赖于X,则称Y 部分函数依赖于X,记作X Y。20相关概念续四4.传递函数依赖【定义4.4】在关系模式R(U)中,如果XY,YZ,且Y X,YX,则称Z 传递函数依赖于X。例:SnoSdept SdeptMname Sno Mname/21相关概念续五5.码【定义4.5】设K
9、 为关系模式R(U,F)中的属性或属性组合。若K U,则K称为R 的一个候选码(Candidate Key)。若关系模式有多个候选码,则选定其中的一个作为主码(Primary Key)。22相关概念续六5.码【定义4.6】关系模式R 中属性或属性组X 并非R 的码,但X 是另一个关系模式的码,则称X 是R 的外部码(Foreign Key),也称外码。例:关系模式R(城市,街道,邮编)城市,街道 邮编,邮编 城市 候选键是?234.2 范式n 关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程序可用范式来衡量。n 范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准
10、,达到范式的关系才是规范化的。24范式续一n 目前主要有六种范式:第一范式、第二范式、第三范式、BC 范式、第四范式和第五范式。n 各种范式之间存在联系:范式:Normal Form25范式续二n 通常把某一关系模式R 为第n范式简记为R nNF。n 在所有范式中,最重要的是3NF 和BCNF,它们是进行规范化的主要目标。n 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级模式的关系模式的集合,这个过程称为规范化。264.2.1 第一范式n【定义4.7】如果一个关系模式R 的所有属性都是不可分的基本数据项,则R 1NF。n 第一范式是对关系模式的一个最起码的要求,不满足第一范式的数
11、据库模式不能称为关系数据库。27第一范式续一n 满足第一范式的关系模式不一定是一个好的关系模式,例:SLC(Sno,Sdept,Sloc,Cno,Grade)函数依赖有:(Sno,Cno)Grade,SnoSdept,(Sno,Cno)Grade,SnoSloc,(Sno,Cno)Sloc,SdeptSloc28第一范式续二29第一范式续三n SLC 关系存在以下4个问题:(1)插入异常:如果要插入一个学生信息Sno=99102,Sdept=IS,Sloc=N,但还因为没有选课信息,所以无法插入。((Sno,Cno)是主码,不允许为空。)应插入的信息无法插入30第一范式续四n SLC 关系存在
12、以下4个问题:(2)删除异常:学号为99022的学生只选修了3号课程,如果现在他不选修3号课程,则该元组整个被删除,从而删除了99022的其他信息。不应删除的信息被删除了31第一范式续五n SLC 关系存在以下4个问题:(3)数据冗余度大:如果一个学生选修了多门课程,那么他的Sdept 和Sloc 值就要重复存储多次。32第一范式续六n SLC 关系存在以下4个问题:(4)修改复杂:如果一个学生转系,除了修改Sdept 外,还要修改Sloc 的值。如果该学生选修了多门课程,那么这些元组中的所有Sdept 和Sloc 值都需要修改。因此,SLC 不是一个好的关系模式334.2.2 第二范式n S
13、LC 出现上述问题的原因是Sdept、Sloc 对码的部分函数依赖。为了消除这些部分函数依赖,可以采用投影分解法,把SLC 分解为两个关系模式:SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)消除非主属性对码的部分函数依赖34第二范式续一35第二范式续二n 2NF 就是不允许关系模式的属性之间有这样的函数依赖XY,其中X 是码的真子集,Y 是非主属性。n 码只包含一个属性的关系模式如果属于1NF,那么它一定属于2NF。因为它不可能存在非主属性对码的部分函数依赖。36第二范式续三n 2NF 并不能完全消除关系模式中的各种异常情况和数据冗余。例如:SL(Sno,Sdept,S
14、loc)是2NF,其中有下列函数依赖:SnoSdept SdeptSloc SnoSloc传递函数依赖37第二范式续四n SL(Sno,Sdept,Sloc)中存在非主属性对码的传递函数依赖,依然存在各种问题:(1)插入异常:刚建的系无学生,无法插入系的信息。(2)删除异常:如果删除某个系的全部学生信息,将会同时删除系信息。38第二范式续五n SL(Sno,Sdept,Sloc)中存在非主属性对码的传递函数依赖,依然存在各种问题:(3)数据冗余度大:同一个系的住处信息将多次存放。(4)修改复杂:某个系学生全部换住处时,所有相关学生信息都要修改。394.2.3 第三范式n SL 出现上述问题的原
15、因是Sloc 传递函数依赖于Sno。为了消除该传递函数依赖,可以采用投影分解法,把SL 分解为两个关系模式:SD(Sno,Sdept)DL(Sdept,Sloc)消除非主属性对码的传递函数依赖40第三范式续一n【定义4.8】如果关系模式R(U,F)中不存在候选码X、属性组Y 以及非主属性Z(Z Y),使得XY,YX 和YZ 成立,则R 3NF。n 可以证明,若R 3NF,则R 2NF。/41第三范式续二部分依赖 传递依赖不传递依赖 不部分依赖3NF 模式2NF 模式n 如果R 是3NF 模式,那么R 也是2NF 模式。42第三范式续三n 将一个2NF 关系分解为多个3NF 的关系后,并不能完全
16、消除关系模式中的各种异常情况和数据冗余。n 例:关系模式STJ(S,T,J)中S 表示学生,T 表示教师,J 表示课程。若每、一教师只教一门课,每门课由若干教师教,某一学生选定某门课,就确定了固定的教师。43第三范式续四n 函数依赖为:(S,J)T(S,T)J TJn 候选码为:(S,J)或(S,T)。n STJ 关系模式中没有非主属性对码的传递或部分函数依赖,所以STJ 3NF。44第三范式续五n 3NF 的STJ 关系模式也存在一些问题:插入异常;删除异常;数据冗余度大;修改复杂。454.2.4 BC 范式n STJ 出现上述问题的原因在于主属性对码的传递依赖。解决这一问题仍然可以采用投影
17、分解法,将STJ 分解为两个关系模式:ST(S,T)TJ(T,J)消除主属性对码的传递函数依赖46BC 范式续一n【定义4.9】设关系模式R(U,F)1NF,如果对R 的每个函数依赖XY,若Y X,则X 必含有候选码,那么R BCNF。n 换句话说,在关系模式R(U,F)中,如果每一个决定属性集都包含候选码,则R BCNF。/47BC 范式续二n BCNF(Boyce Codd Normal Form)是由Boyce 和Codd 提出的。n 如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。484
18、.2.5 多值依赖与第四范式n 如果仅考虑函数依赖这一种数据依赖,属于BCNF 的关系模式已经很完美了。但如果考虑其他数据依赖,如多值依赖,属于BCNF 的关系模式仍存在问题,不能算作是一个完美的关系模式。49多值依赖与第四范式续一n 例:关系模式Teach(C,T,B),其中C 表示课程,T 表示教师,B 表示参考书。50多值依赖与第四范式续二课程C 教师T 参考书B数学 张军 数学分析数学 张军 高等代数数学 张军 微分方程数学 李斯 数学分析数学 李斯 高等代数数学 李斯 微分方程物理 王平 普通物理学物理 王平 光学原理物理 何强 普通物理学物理 何强 光学原理物理 陈明 普通物理学物
19、理 陈明 光学原理 51多值依赖与第四范式续三n Teach 具有唯一候选码(C,T,B),即全码,因而Teach BCNF。但Teach 模式中存在一些问题:数据冗余度大;增加操作复杂;删除操作复杂;修改操作复杂。52多值依赖与第四范式续四n BCNF 的关系模式Teach 之所以会产生上述问题,是因为参考书的取值和教师的取值是彼此独立毫无关系的,它们的取值只取决于课程名。也就是说,关系模式Teach 中存在一种称之为多值依赖的数据依赖。53多值依赖n【定义4.10】设R(U)是一个属性的一个关系模式,X、Y 和Z 是U 的子集,并且Z=U-X-Y,多值依赖XY 成立当且仅当对R 的任一关系
20、r,r 在(X,Z)上的每个值对应一组Y 的值,这组值仅仅决定于X值而与Z 值无关。n 若XY,而Z=,则称XY 为平凡的多值依赖,否则称XY 为非平凡的多值依赖。54多值依赖续一n 例:在Teach 关系中,每个(C,B)上的值对应一组T 值,而这种对应与B 无关。(C,B)T(物理,光学原理)李勇,王军(物理,普通物理学)李勇,王军 C T55多值依赖续二n【定义4.11】在关系模式R(U)的任一关系r 中,如果对于任意两个元组t,s 有tX=sX,就必存在元组w,vr(w 和v可以与s 和t 相同),使得wX=vX=tX 而wY=tY,wZ=sZ,vY=sY,vZ=tZ,即交换s,t 元
21、组的Y 值所得的两个新元组必在r 中,则称Y 多值依赖于X,记为XY。56多值依赖的性质(1)多值依赖具有对称性。即若XY,则XZ,其中Z=U-X-Y。(2)多值依赖具有传递性。即若XY,YZ,则XYZ。(3)函数依赖可以看作是多值依赖的特殊情况。即若XY,则XY。57多值依赖的性质续一(4)若XY,XZ,则XYZ(5)若XY,XZ,则XYZ(6)若XY,XZ,则XY-Z,XY-Z58多值依赖的性质续二(7)多值依赖的有效性与属性集的范围有关。即若XY 在U 上成立,则在W上(XY W U)上一定成立;但XY在W 上(W U)成立,在U 上并不一定成立。59多值依赖的性质续三(8)若多值依赖X
22、Y 在R(U)上成立,对于Y Y,并不一定有XY 成立。但是如果函数依赖XY 在R 上成立,则对于任何Y Y 均有XY 成立。60第四范式n【定义4.12】关系模式R(U,F)1NF,如果对于R 的每个非平凡多值依赖XY(Y X),X 都含有候选码,则R 4NF。n 4NF 就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖,所允许的非平凡多值依赖实际上是函数依赖。614.3 关系模式的规范化n 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。62关系模式的规范化续一n 关系模式规范化时一般应遵循的原则(1)关系模式进行
23、无损连接分解。关系模式分解过程中数据不能丢失或增加,必须把全局关系模式中的所有数据无损地分解到各个子关系模式中,以保证数据的完整性。63关系模式的规范化续二n 关系模式规范化时一般应遵循的原则(2)合理选择规范化程度。考虑到存取效率,低级模式造成的冗余度很大,既浪费了存储空间,又影响了数据的一致性;考虑到查询效率,低级范式比高级范式好,连接运算的代价较小。64关系模式的规范化续三n 关系模式规范化时一般应遵循的原则(3)正确性与可实现性原则。654.3.1 关系模式规范化的步骤n 规范化程序过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题,解决方法
24、就是对其进行规范化,转换成高级的范式。66关系模式规范化的步骤续一67关系模式规范化的步骤续二(1)对1NF 关系进行投影,消除原关系中非主属性对码的部分函数依赖,将1NF 关系转换为若干个2NF 关系。(2)对2NF 关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF 关系。68关系模式规范化的步骤续三(3)对3NF 关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖,得到一组BCNF。以上三步也可以合并为一步:对原关系进行投影,消除决定属性不是候选码的任何函数依赖。69关系模式规范化的步骤续四(4)对BCNF 关系进行投影,消除原关系中非平凡且非函数依赖
25、的多值依赖,从而产生一组4NF 关系。(5)对4NF 关系进行投影,消除原关系中不是由候选码所蕴含的连接依赖,即可得到一组5NF 关系。5NF 是最终范式。704.3.2 关系模式的分解n 关系模式的规范化过程是通过对关系模式的分解来实现的。n 把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的。在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义。71关系模式的分解续一n 关系模式分解的三个定义:分解具有“无损连接性”;分解要“保持函数依赖”;分解既要“保持函数依赖”,又要具有“无损连接性”。72关系模式的分解续二n 例:对于关系模式SL(Sno,Sde
26、pt,Sloc),SL 中有下列函数依赖:SnoSdept SdeptSloc SnoSloc 此关系模式的主码是什么?最高属于第几范式?为什么?73关系模式的分解续三n 由于SL 2NF,该关系模式存在很多问题,因此需要分解该关系模式,使其成为更高范式的关系模式。分解方法有很多种。n 假设该关系模式的一个关系为:Sno Sdept Sloc99001 CS A99002 IS B99003 MA C99004 IS B99005 PH B74关系模式的分解续四n 第一种分解方法 将SL 分解为以下3个关系模式:SN(Sno)SD(Sdept)SO(Sloc)Sno99001990029900
27、39900499005SdeptCSISMAPHSD SNSlocABCSO不可取75关系模式的分解续五n 第二种分解方法 将SL 分解为以下两个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)Sno Sloc99001 A99002 B99003 C99004 B99005 BSdept SlocCS AIS BMA CPH B76关系模式的分解续六n 第二种分解方法Sno Sloc Sdept99001 A CS99002 B IS99002 B PH99003 C MA99004 B IS99004 B PH99005 B IS99005 B PHNL DL多余元组不可取损
28、失连接77关系模式的分解续七n 第三种分解方法 将SL 分解为以下两个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)Sno Sdept99001 CS99002 IS99003 MA99004 IS99005 PHSno Sloc99001 A99002 B99003 C99004 B99005 B78关系模式的分解续八n 第三种分解方法ND NLSno Sdept Sloc99001 CS A99002 IS B99003 MA C99004 IS B99005 PH B无损连接79无损连接n 设关系模式R(U,F)被分解为若干个关系模式R1(U1,F1),R2(U2,F2),
29、Rn(Un,Fn)(其中U=U1U2Un,且不存在 Ui Uj,F 为F 在Ui上的投影),若R与R1,R2,Rn自然连接的结果相等,则称关系模式R 的这个分解具有无损连接性。n 只有具有无损连接性的分解才能够保证不丢失信息。80关系模式的分解续九n 第三种分解方法 将SL 分解为以下两个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)Sno Sdept99001 CS99002 IS99003 MA99004 IS99005 PHSno Sloc99001 A99002 B99003 C99004 B99005 B丢失函数依赖:SdeptSloc不可取81保持函数依赖n 设关系模
30、式R(U,F)被分解为若干个关系模式R1(U1,F1),R2(U2,F2),Rn(Un,Fn)(其中U=U1U2Un,且不存在 Ui Uj,F 为F 在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R 的这个分解是保持函数依赖的。82关系模式的分解续十n 第四种分解方法 将SL 分解为以下两个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)Sno Sdept99001 CS99002 IS99003 MA99004 IS99005 PHSdept SlocCS AIS BMA CPH B是否无损分解?是否保持函数依
31、赖?83关系模式的分解续十一n 判断对关系模式的一个分解是否与原关系模式等价可以有三种不同的标准 分解具有无损连接性;分解要保持函数依赖;分解既要保持函数依赖,又要具有无损连接性。84关系模式的分解续十二n 规范化理论提供了一套完整的模式分解算法,按照这套算法可以做到:(1)若要求分解具有无损连接性,那么模式分解一定能够达到4NF。(2)若要求分解保持函数依赖,那么模式一定能够达到3NF,但不一定能够达到BCNF。85关系模式的分解续十三n 规范化理论提供了一套完整的模式分解算法,按照这套算法可以做到:(3)若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够
32、达到BCNF。86关系模式的分解续十四级 别 特 点分解特性无损分解保持FD1NF属性值是原子值2NF消除了非主属性对键的局部函数依赖 能达到 能达到3NF消除了非主属性对键的传递函数依赖 能达到 能达到BCNF消除了每一属性对键的传递函数依赖 能达到 不一定能达到4NF 消除了非平凡且非FD 的MVD能达到 不一定能达到87补充例题n 假设某商业集团数据库中有一关系模式R 如下:R(商店编号,商品编号,数量,部门编号,负责人)如果规定:(1)每个商店的每种商品只在一个部门销售;(2)每个商店的每个部门只有一个负责人;(3)每个商店的每种商品只有一个库存数量。88补充例题续一n 试回答下列问题
33、(1)根据上述规定,写出关系模式R 的基本函数依赖;(商店编号,商品编号)部门编号(商店编号,部门编号)负责人(商店编号,商品编号)数量89补充例题续二n 试回答下列问题(2)找出关系模式R 的候选码;(商店编号,商品编号)+=商店编号,商品编号,部门编号,负责人,数量(商店编号,商品编号)是候选码90补充例题续三n 试回答下列问题(3)判断R 最高可达到第几范式?为什么?属性不可再分没有非主属性对码的部分函数依赖存在非主属性对码的传递函数依赖91补充例题续四(商店编号,商品编号)部门编号(商店编号,部门编号)负责人(商店编号,商品编号)部门编号(商店编号,商品编号)商店编号(商店编号,商品编号)(商店编号,部门编号)负责人92补充例题续五n 试回答下列问题(4)给出一个可能的3NF 分解。R1(商店编号,商品编号,数量,部门编号)R2(商店编号,部门编号,负责人)93分解成3NF 模式集的算法n 设关系模式R(U),主码是W,R 上还存在FD XZ。并且Z 是非主属性,Z不是X 的子集,X 不是候选键,这样WZ 就是一个传递依赖,此时应把R分解成两个模式:R1(XZ),主码是X;R2(Y),其中Y=U-Z,主码是W,外码是X。94分解成3NF 模式集的算法续R1(XZ),主码是XR2(Y),Y=U-Z,主码是W,外码是X95
限制150内