h1第5章关系数据库理论.ppt_第1页
h1第5章关系数据库理论.ppt_第2页
h1第5章关系数据库理论.ppt_第3页
h1第5章关系数据库理论.ppt_第4页
h1第5章关系数据库理论.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津师范大学管理学院06/072,1,数 据 库 原 理,张庆一 2007.2 天津师范大学管理学院,天津师范大学管理学院06/072,2,第5章 关系模式设计与规范化,5.1 关系模式设计中的问题 5.2 函数依赖 5.3 关系模式的规范化 5.4 多值依赖与第四范式* 5.5 规范化小结,天津师范大学管理学院06/072,3,5.1 关系模式设计中的问题,511 问题的提出 512 什么原因使关系模式出现操作异常,天津师范大学管理学院06/072,4,511 问题的提出,1 问题的提出-如何构造关系模式 面对一个实际应用问题,如何构造适合该应用的关系模式是数据库设计的问题。 例如对于一个实际应用,如果简单地将现实问题的属性集U组成一个关系模式R(U),即只使用一个大表去包含所有的数据,那是不合适的,它将引发出一些问题。,天津师范大学管理学院06/072,5,5.1 关系模式设计中的问题,2 例5-1,设计一个学生学习情况的数据库SSDB,它具有学号(Sno)、姓名(Sname)、年龄(Sage)、所在系(Sdept)、课程号(Cno)、课程名称(Cname)、成绩(Grade)和先修课程号(Cpno)等属性。可以构造关系数据库模式为: SCG(Sno,Sname,Sage,Sdept,Cno,Cname,Grade,Cpno) 主码:(Sno,Cno) 这个关系描述的是,每个学生属于指定的系,每个学生可以选修多门课程,并且取得相应的成绩。,天津师范大学管理学院06/072,6,5.1 关系模式设计中的问题,关系模式SCG具体的一个实例为: 由实例可以看到它存在以下缺陷: (1)冗余度大 (2)插入异常 (3)更新异常 (4)删除异常,学生每选一门课程,有关的信息都要存储一次。,该表主码是(Sno,Cno),若插入一位新生记录,但他未选修课程,则Cno值为空,违反了实体完整性约束规则,因此这个学生记录不可以输入。,数据冗余度大,导致修改麻烦,例如学生李勇调到IS系了,那么就要修改相关的三个记录,如果漏掉一个地方会造成数据不一致的错误。,若某个学生因病没有选修课程,则表中有关这个学生的所有元组都要被删掉(Cno不能为空)。那么就找不到这个学生的有关信息了。,天津师范大学管理学院06/072,7,5.1 关系模式设计中的问题,但是,如果使用下面三个关系模式 Student(Sno,Sname, Sage,Sdept) Course(Cno,Cname, Cpno) SC(Sno,Cno,Grade) 来代替SCG(U)关系模式,数据冗余和操作异常现象将得到解决。 Student,Course,SC三个关系模式构成一个关系模式集合: =Student,Course,SC,天津师范大学管理学院06/072,8,5.1 关系模式设计中的问题,3 简要结论: 实际应用时,往往R(U)不是恰当的形式, 要使用一个关系模式的集合=R1,R2,Rn来代替RU, 其中每个Ri的属性是U的子集。 这里, 关系模式的集合称为数据库模式, 对数据库模式的每个关系模式Ri赋予一个当前值就得到数据库实例(简称数据库)。,天津师范大学管理学院06/072,9,512 什么原因使关系模式出现操作异常,关系模式SCG(U)为什么会出现数据冗余和操作异常这样的问题呢? 这需要从语义方面进行分析: 客观世界中的事物彼此相互联系、相互制约, 同样客观事物本身的各个属性之间也存在相互联系、相互制约。 例如一个人手机号码依赖于他的身份证(姓名)。 属性之间的这种依赖关系表达了一定的语义信息。,天津师范大学管理学院06/072,10,512 什么原因使关系模式出现操作异常,数据库设计过程中,下面的联系都需要考虑: 实体之间的联系 实体属性之间的联系 数据模型表示的是实体之间的联系,但是对于属性之间的联系却没有给予充分的注意。 如果仅考虑数据模型,却没有考虑属性之间的联系,那么就会出现前面提到的问题。,天津师范大学管理学院06/072,11,512 什么原因使关系模式出现操作异常,研究属性之间的内在语义联系,就是研究数据依赖联系问题。 数据依赖有多种,最重要的是: 函数依赖 多值依赖 数据依赖在关系数据库设计理论中起着核心作用。,天津师范大学管理学院06/072,12,5.2 函数依赖,521 关系模式的形式定义回忆 522 函数依赖定义 523 函数依赖与码的关系,天津师范大学管理学院06/072,13,521 关系模式的形式定义回忆,通俗地讲: 在关系模式框架下添入数据就是一个具体的关系。 关系又称为关系模式的实例。 关系必须满足一定的约束。 现实世界的许多已有事实,限定了关系模式所有可能的关系必须满足一定的完整性约束条件。 属性数据之间存在的联系称为“数据依赖”。它是数据模型设计的关键。,天津师范大学管理学院06/072,14,521 关系模式的形式定义回忆,关系模式要反映完整性的约束条件。因此,一个关系模式的形式定义如下: R(U,D,dom,F) 说明: R:关系名是符号化的元组语义。 U:构成该关系的属性集合。 D:属性组U中属性所来自的域。 dom:属性到域的映射。 F:属性组U上的一组数据依赖。 D和dom对设计关系不大,这里可简化为: R(U,F) 当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系。,天津师范大学管理学院06/072,15,522 函数依赖定义,1 函数依赖定义 设R(U)是属性集U上的关系模式,X , Y U。 若 r是R(U) 上的任意一个关系,则r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等。 即如果成立对t , s r,若tX = sX,则tY = sY,那么称“X函数决定Y”,或“Y函数依赖于X”,记作XY。 称X为决定因素。 tX表示元组t在属性集上的值。,天津师范大学管理学院06/072,16,522 函数依赖定义,函数依赖表示了对当前关系r的任意两个元组,若X值相等,则要求Y值也相等。 即有一个X值就有一个Y值与之对应,或者说Y值由X值决定,不存在一个X值对应两个以上的Y值。 例5-2,关系S(Sno,Sname)中,对于每个Sno的值,都有一个Sname值与之对应。 (而反之则不是这样的,) 这时,用Sno Sname表示 Sno决定Sname。,天津师范大学管理学院06/072,17,522 函数依赖定义,注意 函数依赖不是指R的某个或某些关系满足的约束条件, 而是指R的一切关系都要满足的约束条件。,天津师范大学管理学院06/072,18,522 函数依赖定义,例5-3,设有关系模式 R(学生Sno,系Sdept,系负责人MN,课程Cname,成绩Grade) 其属性组集合为: U=Sno,Sdept,MN,Cname,Grade 由现实世界的已知事实可知: 一个系有若干学生,一个学生只属于一个系 一个系只有一名负责人 一个学生可以选修多门课程,每门课程有若干学生选修 每个学生学习每一门课程有一个成绩 则得到属性组U上的一组函数依赖: F=SNOSDEPT,SDEPTMN,(SNO,CNAME)G,天津师范大学管理学院06/072,19,522 函数依赖定义,例5-4,设关系模式R(A,B,C,D),在R中,属性之间有以下联系: A值与B值有一对多关系,即每个A值有多个B值和它对应,而B值只有一个A值和它对应。 C值和D值之间是一对一的关系。 试写出属性组U上的函数依赖。 解: R关系的属性组为:U=A,B,C,D U上的函数依赖为:F=BA,CD,DC,天津师范大学管理学院06/072,20,522 函数依赖定义,2 非平凡函数依赖与平凡函数依赖定义 一个函数依赖XY,如果Y X,则称XY是非平凡的函数依赖,否则称为平凡的函数依赖。 一般不加以声明,讨论的都是非平凡函数依赖。 有关标记: 若XY,YX,则记作XY。 若Y不函数依赖于X,则记作XY。,天津师范大学管理学院06/072,21,522 函数依赖定义,例5-5,设Sname属性值不允许同名情况,分析关系模式R(Sno,Sname,Ssex,Sage,Sdept)的所有函数依赖。 解:关系模式R的函数依赖有: SnoSdept SnameSdept SnoSsex SnameSsex SnoSage SnameSage SnoSname,天津师范大学管理学院06/072,22,522 函数依赖定义,3 完全函数依赖定义 在R(U)中,如果XY,且对于任意X的真子集X,都有XY ,则称Y对X完全函数依赖,记作:X Y。 例5-6,分析学生选课关系模式SC(Sno,Cno,Grade)中的函数依赖。 解:侯选码:(Sno,Cno) Sno Grade, Cno Grade (单个属性不能作为决定因素) (Sno,Cno) Grade,天津师范大学管理学院06/072,23,522 函数依赖定义,4 部分函数依赖定义 在R(U)中,如果XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖。记作: X Y,天津师范大学管理学院06/072,24,522 函数依赖定义,例5-7,设关系模式R(Sno, Sdept,Cno,Grade),其中Sno表示学生学号、Sdept学生表示所在系、Cno表示课程号,Grade表示学生选课的成绩。该关系模式描述了一个学生分配在一个系,一个学生可以选修多门课程,每门课程有若干学生选修,每个学生学习每一门课程有一个成绩。试分析R中的函数依赖。 解: 侯选码: (Sno,Cno) 根据语义可有如下函数依赖: (Sno,Cno) Grade SnoSdept,,(Sno,Cno) Sdept,天津师范大学管理学院06/072,25,522 函数依赖定义,5 传递函数依赖定义 在R(U)中,如果XY,Y Z,且Y X和Z Y ,则称Z对X传递函数依赖。 注意,Y X条件是必须有的,否则是直接函数依赖。 例5-8, 分析关系模式R(Sno,Sdept,MN,Cname,Grade)中的传递函数依赖。 解: SnoSdept,SdeptMN 且 SdeptSno 传递 Sno MN,天津师范大学管理学院06/072,26,522 函数依赖定义,6 函数依赖关系的三种表示方法 集合表示法 例如,F=SnoSname,SnoSage 函数依赖图表示法 函数依赖简图表示法 S(Sno,Sname,Sage),Sno,Sname,Sage,天津师范大学管理学院06/072,27,522 函数依赖定义,7 综合举例 例5-9,设车间考核职工月完成生产定额关系如下: W(月份,工号,姓名,工种,超额,定额,车间,车间主任) 试分析W的函数依赖关系。 解:因每个职工、每月超额是变动的,定额很少变动;故为识别不同或相同职工在不同月份超额情况,使用(月份,工号)作为主码。则根据一般实际情况: (月份,工号) 超额 工号 姓名,工号 工种,工号 车间 工种定额 工号定额 (传递依赖) 车间 车间主任 工号车间主任 (传递依赖),天津师范大学管理学院06/072,28,522 函数依赖定义,W(月份,工号,姓名,工种,超额,定额,车间,车间主任)的函数依赖关系用函数依赖简图方法表示如下: W(月份,工号,姓名,工种,超额,定额,车间,车间主任),天津师范大学管理学院06/072,29,523 函数依赖与码的关系,将函数依赖概念与码(这里的码应泛指侯选码)联系起来,实际上函数依赖是码的推广。 下面是用函数依赖的概念定义码: 候选码:设K为R(U , F)中的属性或属性集合,若 K U,则称K为R的候选码。 主码:若R(U , F)有多个候选码,则可以从中选定一个作为R的主码。 主属性:包含在任何一个侯选码中的属性,叫主属性。(反之,称为非主属性。),天津师范大学管理学院06/072,30,523 函数依赖与码的关系,全码:关系模式的侯选码由整个属性组构成。 外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。 注意:主码与外码提供了表示关系的手段。,天津师范大学管理学院06/072,31,5.3 关系模式的规范化,5.3.1 关系模式的衡量标准 5.3.2 第一范式 5.3.3 第二范式 5.3.4 第三范式 5.3.5 BCNF,天津师范大学管理学院06/072,32,5.3.1 关系模式的衡量标准,1 关系模式的衡量标准 关系数据库中的关系要满足一定的要求。 满足不同程度的要求,即为不同的范式。 范式是关系模式的衡量标准。,天津师范大学管理学院06/072,33,5.3.1 关系模式的衡量标准,2 范式产生 19711972年, Codd系统提出了1NF、2NF、3NF。 1974年,Codd和Boyce又提出BCNF。 1976年,Fagin提出了4NF。 以后又有人提出5NF。,天津师范大学管理学院06/072,34,5.3.1 关系模式的衡量标准,3 范式之间的关系 人们将范式理解为符合某一种级别的关系模式的集合。因此,R为第几范式可以表示为: RxNF。 各种范式之间的关系是:5NF级别最高,1NF级别最低。,天津师范大学管理学院06/072,35,5.3.1 关系模式的衡量标准,5 规范化 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合。 范式的转换过程称为规范化。,天津师范大学管理学院06/072,36,5.3.2 第一范式范式,第一范式定义(1NF): 如果某一个关系其每一个分量是不可分的数据项,那么这个关系模式属于第一范式。 讨论: 满足第一范式,是对关系的最基本要求。,天津师范大学管理学院06/072,37,5.3.2 第一范式范式,例5-10,关于描述学生基本情况和学习成绩的S-L-C关系: S-L-C(SNO,SDEPT,SLOC,CNO,GRADE) 其中: SLOC表示学生的住处,且每个系的学生住同一地方。 观察:显然S-L-C满足第一范式,元组的每个分量不可再分。,天津师范大学管理学院06/072,38,5.3.3 第二范式,第二范式定义(2NF) 若R1NF,且每一个非主属性完全依赖于侯选码,则R2NF。 讨论 第二范式消除了非主属性对侯选码的部分函数依赖。,天津师范大学管理学院06/072,39,5.3.3 第二范式,例5-11,分析关系模式 S-L-C(SNO,SDEPT,SLOC,CNO,GRADE)。是否符合2NF。(其中SLOC为学生宿舍,每个系的学生住在一起) 分析: 侯选码:(SNO,CNO) (只有一个) 函数依赖有: (SNO,CNO) GRADE SNO SDEPT,(SNO,CNO) SDEPT SNO SLOC , (SNO,CNO) SLOC 此外, SDEPT SLOC (3NF中讨论) 由部分函数依赖可知,关系模式S-L-C不符合2NF。,非主属性部分依赖,天津师范大学管理学院06/072,40,5.3.3 第二范式,当一个关系模式不属于2NF时,将会产生如下问题: 插入异常:如果插入一个学生记录,但该学生未选课,则CNO是空值,则破坏实体完整性。 删除异常:设某学生只选修一门课,且又不选了,则该学生的CNO值需要删除,但CNO是主属性,不能为空,若删除该学生记录,则该学生的其他信息也就丢失了。 更新异常:若某学生转系,需要修改SDEPT和SLOC。但该学生选课较多,则必须无遗漏地全部修改。否则更新异常。 冗余太大:重复数据多。,天津师范大学管理学院06/072,41,5.3.3 第二范式,如何解决不符合第二范式的关系模式? 解决办法: 使用投影方法分解模式。,天津师范大学管理学院06/072,42,5.3.3 第二范式,例5-12,将符合1NF的关系模式 S-L-C(SNO,SDEPT,SLOC,CNO,GRADE) 通过投影方法进行分解,使之符合2NF。 分析:侯选码只有一个,即(SNO,CNO)。S-L-C中只有GRADE完全依赖于主码,而非主属性SDEPT和SLOC对主码部分依赖。 因此,将关系模式S-L-C分解为两个关系模式。 SC(SNO,CNO,G) 主码:(SNO,CNO) S-L(SNO,SDEPT,SLOC) 主码:SNO 这样,非主属性完全依赖码,符合2NF。,天津师范大学管理学院06/072,43,5.3.4 第三范式,第三范式定义(3NF) 关系模式R(U,F)中如果不存在这样的码X,属性组Y及非主属性Z(Z不属于Y)使得X Y,(Y X)Y Z成立,则称R(U,F)3NF。 讨论 第三范式满足第二范式。 消除了非主属性对侯选码的传递函数依赖。,天津师范大学管理学院06/072,44,5.3.4 第三范式,例5-13,分析关系模式SC和S-L。 SC(SNO,CNO,G) 主码:(SNO,CNO) S-L(SNO,SDEPT,SLOC) 主码:SNO 分析: 在SC中没有传递函数依赖, 但在S-L中存在传递函数依赖,即 SNOSDEPT ,SDEPT SNO 但:SDEPT SLOC 故:SNO SLOC(传递依赖,且SLOC是非主属性) 所以,SC属于3NF,但S-L不属于3NF。,天津师范大学管理学院06/072,45,5.3.4 第三范式,将符合2NF但不符合3NF的关系模式变为符合3NF的解决方法仍然是使用投影方法分解模式。 例5-14,将关系模式S-L分解为两个关系模式。 S-D(SNO,SDEPT) 码:SNO D-L(SDEPT,SLOC) 码:SDEPT 这样,分解后的S-D和D-L关系模式中不再存在传递函数依赖。,天津师范大学管理学院06/072,46,5.3.5 BCNF,BCNF定义: 关系模式R(U,F)1NF。如果XY且Y不属于X时X必含有侯选码,则R(U,F)BCNF。 讨论: 定义的含义是,关系模式R(U,F)中,每个决定因素都包含侯选码,则R(U,F)BCNF。 3NF仅排除了非主属性对侯选码的传递函数依赖。而BCNF排除了主属性对侯选码的传递函数依赖。 通常认为BCNF是修正的第三范式。 关系模式R(U,F)BCNF,则必有R(U,F)3NF,反之不一定。,天津师范大学管理学院06/072,47,5.3.5 BCNF,根据BCNF定义,满足BCNF的关系模式有如下特征: 所有非主属性(不包含在任何候选码中的属性)对每一个码都是完全函数依赖。 所有的主属性(包含在任何一个候选码中的属性)对每一个不包含它的码,也是完全函数依赖。 没有任何属性完全函数依赖于非码的任何一组属性。 结论: R(U,F)BCNF,排除了任何属性(主或非主属性)对码的传递依赖与部分依赖,因此R3NF。但是,R3NF,未必RBCNF。,天津师范大学管理学院06/072,48,5.3.5 BCNF,例5-15,分析关系模式Course(Cno,Cname,Cpno)。是否属于BCNF。 分析: 侯选码:Cno(只有一个) 非主属性: Cname,Cpno 函数依赖:Cno Cname CnoCpno (课程名称不唯一,可相同,是针对不同对象的。) 故, Course BCNF,天津师范大学管理学院06/072,49,5.3.5 BCNF,例5-16,已知关系模式S(Sno,Sname,Sdept,Sage),且设Sname值唯一,试分析S是否属于BCNF。 分析: 侯选码:Sno,Sname 非主属性:Sdept,Sage 函数依赖:SnoSname,SnoSdept,SnoSage SnameSno,SnameSdept,SnameSage 侯选码由单个属性构成,主或非主属性不存在传递依赖和部分依赖。 故,SBCNF,天津师范大学管理学院06/072,50,5.3.5 BCNF,例5-17,设关系模式R(Sno,T,Cno),其中Sno表示学生学号、T表示教师、Cno表示课程号,该关系描述了每门课程有若干个教师,每位教师只教一门课程,一位学生选定一门课程就对应着一位教师。试分析该关系模式是否符合BCNF。 解: 根据语义找出 侯选码:(Sno,Cno),(Sno,T) 非主属性:(不存在非主属性,都是主属性。) 并找到如下函数依赖: (Sno,Cno)T,(Sno,T)Cno,TCno 显然,因不存在非主属性,所以自然满足3NF。但是主属性Cno对不包含它的侯选码(Sno,T)是部分依赖,故R不是BCNF。,天津师范大学管理学院06/072,51,5.4 多值依赖与第四范式*,5.4.1 多值依赖 5.4.2 第四范式,天津师范大学管理学院06/072,52,5.4.1 多值依赖,引例 例5-18,设有关系模式Teaching(C,T,B),其中,C表示课程,T表示教师,B表示参考书。其语义描述是: 一门课程由多个教师讲授, 每门课程使用相同的一套参考书, 每名教师可以讲授多门课程, 每本参考书可以供多门课程使用。 观察这张关系表 关系模型Teaching的侯选码是(C,T,B),且只有一个,是全码。故Teaching BCNF 对该表数据增删不方便,数据冗余大。例,增加一名教师,须插入多个元组(这里三个), 某门课程去掉一本参考书,也要删多个元组。,这是一种具有多值依赖MVD(Multi Valued Dependency)的数据依赖。 给定一个C值,可以有一组T值与之对应。 C与T之间的对应关系与B值无关。,天津师范大学管理学院06/072,53,5.4.1 多值依赖,多值依赖定义 设R(U)是属性集U上的一个关系模式。 X,Y,Z是U的子集,且Z=U-X-Y。 关系模式R(U)中多值依赖XY成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。 如果Z= ,即Z为空,则称XY为平凡的多值依赖

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论