版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AnIntroductiontoDatabaseSystem
广东工业大学计算机学院数据库系统概论AnIntroductiontoDatabaseSystem第六章关系数据理论AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem内容概述
详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据依赖的Armstrong公理系统。本章内容分为基本要求部分(《概论》6.1-6.3)和高级部分(《概论》6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。
本章目标
关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法。
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌握数据依赖的基本概念,范式的概念,从1NF到4NF的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。
难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。
本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem第六章关系数据理论6.1问题的提出6.2规范化6.3数据依赖的公理系统*6.4模式的分解6.5小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.1问题的提出关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式数据库逻辑设计的工具──关系数据库的规范化理论AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem问题的提出一、概念回顾二、关系模式的形式化定义三、什么是数据依赖四、关系模式的简化定义五、数据依赖对关系模式影响AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem一、概念回顾关系关系模式关系数据库关系数据库的模式AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:
R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性间数据的依赖关系集合AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem三、什么是数据依赖?1.完整性约束的表现形式限定属性取值范围:例如学生成绩必须在0-100之间定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem什么是数据依赖(续)2.数据依赖一个关系内部
属性与属性之间的约束关系现实世界,一个事物内部属性间相互联系的抽象数据内在的性质语义的体现AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem什么是数据依赖(续)3.数据依赖的类型共有三种:函数依赖(FunctionalDependency,简记为FD)多值依赖(MultivaluedDependency,简记为MVD)连接依赖(JoinDependency,简记为JD)其中最重要的是函数依赖和多值依赖。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem四、关系模式的简化表示关系模式R(U,D,DOM,F)简化为一个三元组:
R(U,F)当且仅当U上的一个关系r满足F时,
r称为关系模式R(U,F)的一个关系AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem五、数据依赖对关系模式的影响[例1]建立一个描述学校教务的表:
学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grade)单一的关系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}问题:什么样的关系模式是一个好的关系模式?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem数据依赖对关系模式的影响(续)
根据语义分析属性组U上的一组函数依赖F:
F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}
SnoCnameSdeptMnameGradeAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem关系模式Student<U,F>中存在的问题1.数据冗余太大2.更新异常(UpdateAnomalies)3.插入异常(InsertionAnomalies)4.删除异常(DeletionAnomalies)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem数据依赖对关系模式的影响(续)结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem分解关系模式把这个单一模式分成3个关系模式:S(Sno,Sdept,Sno→Sdept);SC(Sno,Cno,Grade,(Sno,Cno)→Grade);DEPT(Sdept,Mname,Sdept→Mname)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem第六章关系数据理论6.1问题的提出6.2规范化6.3数据依赖的公理系统*6.4模式的分解6.5小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化
规范化理论
正是用来评价、改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.1函数依赖函数依赖平凡函数依赖与非平凡函数依赖完全函数依赖与部分函数依赖传递函数依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem引例关系模式内部各属性间的依赖关系在student(sno,sname,sex,dept)中,姓名可能重名。属性sno、sname之间存在关系:
sname=f(sno)
或sno→sname此时,任意两个元组,如果在sno分量上的值不同,则在sname分量上的值也一定不相同。类似的关系在其它元组中还存在,如sno→sname、
sno→dept等。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem一、函数依赖定义6.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。即:由X上的值可以确定Y上的值。思考:为什么概念不表述为“r中两个元组如果在X上的属性值相
等,则在Y上的属性值也相等”?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem说明
1.
关系模式需要满足的即所有关系实例均要满足,而不是某一关系满足2.语义范畴的概念3.数据库设计者可以对现实世界作强制的规定如规定:姓名不能重名等AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem二、平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→
Grade
平凡函数依赖:(Sno,Cno)→
Sno(Sno,Cno)→CnoP173
约定:若不特别声明,总是讨论非平凡函数依赖。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem平凡函数依赖与非平凡函数依赖(续)若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。若X→Y,Y→X,则记作X←→Y。若Y不函数依赖于X,则记作X→Y。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem三、完全函数依赖与部分函数依赖定义6.2在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y对X完全函数依赖,记作
XFY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPY。
思考:平凡函数依赖与部分函数依赖之间的关系?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem完全函数依赖与部分函数依赖(续)[例1]中(Sno,Cno)→Grade是完全函数依赖,
(Sno,Cno)→Sdept是部分函数依赖:因为Sno→Sdept成立,且Sno是(Sno,Cno)的真子集FPAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem四、传递函数依赖定义6.3在R(U)中,如果X→Y,(YX),Y→X,Y→Z,
ZY则称Z对X传递函数依赖。记为:X→Z
注:1)YX:强调是非平凡函数依赖,进而排除了部分函数依赖。
2)
Y→X
:如果Y→X,即X←→Y,则Z直接依赖于X。
3)ZY:例:在关系Std(Sno,Sdept,Mname)中,有:
Sno→Sdept,Sdept→MnameMname传递函数依赖于Sno传递AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.2码定义6.4设K为R<U,F>中的属性或属性组合。若K
U,则K称为R的侯选码(CandidateKey)。若候选码多于一个,则选定其中的一个做为主码(PrimaryKey)。F注意:K→U的理解。F【引理】XA1A2···An成立的充要条件是XAi成立。(i=1、2···
n)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem码(续)主属性与非主属性包含在任何一个候选码中的属性,称为主属性(Primeattribute)不包含在任何码中的属性称为非主属性(Nonprimeattribute)或非码属性(Non-keyattribute)全码整个属性组是码,称为全码(All-key)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem码(续)[例2]
关系模式S(Sno,Sdept,Sage),单个属性Sno是码,
SC(Sno,Cno,Grade)中,(Sno,Cno)是码[例3]
关系模式R(P,W,A)
P:演奏者W:作品A:听众一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品码为(P,W,A),即All-Key
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem外部码定义6.5
关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey)也称外码如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码
主码与外部码一起提供了表示关系间联系的手段AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem补充:由函数依赖求候选码属性根据函数依赖集可分成四类:L类:仅出现在F中函数依赖左部的属性。R类:仅出现在F中函数依赖右部的属性。LR类:函数依赖左右两边都出现的属性。N类:函数依赖左右两边都不出现的属性。【定理】对于给定的关系模式及其函数依赖集F,X∈
UX是L类属性,则X必定为任一候选码的成员;X是R类属性,则X必定不在任何候选码中;X是LR类属性,则X可能在某一候选码中,也可能不在任一候选码中。若X是N类属性,则X必定在R的任一候选码中;AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem例:已知关系模式的函数依赖集F,求关系模式的候选码。1)设关系模式为R<U,F>,
U={A,B,C,D,E,P},
F={A→D,E→D,D→B,BC→D,DC→A}2)关系模式W(I,J,K,X,Y)
F={I→J,I→K,K→X,X→Y}
3)设关系模式为R<U,F>,
U={A,B,C,D,E,F},
F={A→F,BC→D,D→C,B→E,C→A}AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.3范式范式是符合某一种级别的关系模式的集合。
NF:NormalForm范式针对的是关系模式,而非某个时刻的关系。范式的种类:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF) BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.3范式各种范式之间存在联系:某一关系模式R为第n范式,可简记为R∈nNF。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.42NF1NF的定义 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF;第一范式是对关系模式的最起码的要求。
不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF(续)[例4]关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方函数依赖包括:
(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→SlocAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF(续)S-L-C的码为(Sno,Cno)S-L-C满足第一范式。非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C虚线表示部分函数依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemS-L-C不是一个好的关系模式(续)(1)插入异常(2)删除异常(3)数据冗余度大(4)修改复杂AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemS-L-C不是一个好的关系模式(续)原因非主属性Sdept、Sloc部分函数依赖于码。解决方法:模式分解
S-L-C分解为两个关系模式,以消除这些部分函数依赖SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF(续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSloc关系模式SC的码为(Sno,Cno)关系模式S-L的码为Sno这样非主属性对码都是完全函数依赖
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF(续)2NF的定义 定义6.6若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。 例:S-L-C(Sno,Sdept,Sloc,Cno,Grade)∈1NFS-L-C(Sno,Sdept,Sloc,Cno,Grade)∈2NF S-L-C分解为两个关系模式以后:
SC(Sno,Cno,Grade)∈
2NF S-L(Sno,Sdept,Sloc)∈
2NFAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF(续)有关2NF结论:采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.53NF3NF的定义
定义6.7关系模式R<U,F>
中若不存在这样的码X、属性组Y及非主属性Z(ZY),使得X→Y,Y→Z成立,
Y→X,则称R<U,F>∈3NF。结论:若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF(续)例:2NF关系模式S-L(Sno,Sdept,Sloc)中函数依赖:
Sno→SdeptSdept→SnoSdept→Sloc
可得:
Sno→Sloc,即S-L中存在非主属性对码的传递函数依赖,S-L∈3NF传递AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF(续)函数依赖图:S-LSnoSdeptSlocTAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF(续)解决方法采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:S-D(Sno,Sdept)
D-L(Sdept,Sloc)S-D的码为Sno,D-L的码为Sdept。分解后的关系模式S-D与D-L中不再存在传递依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF(续)S-D的码为Sno,D-L的码为SdeptSnoSdeptS-DSdeptSlocD-LS-L(Sno,Sdept,Sloc)∈2NFS-L(Sno,Sdept,Sloc)∈3NFS-D(Sno,Sdept)∈3NFD-L(Sdept,Sloc)∈3NFAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2NF与3NF间的关系?证明:若R3NF,则必R2NF。
注:该例题很好的揭示了3NF定义与2NF之间的关系。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF(续)有关3NF的结论:采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上减缓原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.6BC范式(BCNF)定义6.8关系模式R<U,F>∈1NF,若X→Y且YX时X必含有码,则R<U,F>∈BCNF。等价于:每一个非平凡函数依赖中,决定属性因素都包含码。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)有关BCNF的结论:所有非主属性对每一个码都是完全函数依赖;所有的主属性对每一个不包含它的码,也是完全函数依赖;即:消除了主属性对不包含它的码的部分函数依赖;思考:BCNF中是否存在主属性对(不包含它的)码的传递函数依赖?没有任何属性完全函数依赖于非码的任何一组属性;R∈BCNFR∈3NF充分不必要AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)[例5]请判别关系模式SC(Sno,Cno,Grade)最高属于哪一级范式?C∈3NFC.C∈1NFC∈BCNFD.C∈2NF[例6]请判别关系模式S(Sno,Sname,Sdept,Sage)最高属于哪一级范式?1.假定S有两个码Sno,Sname;2.假定S有一个码Sno;C∈3NFC.C∈1NFC∈BCNFD.C∈2NFAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)[例7]关系模式SJP(S,J,P)函数依赖:{(S,J)→P;(J,P)→S}SJP∈3NF,SJP∈BCNF分析:(S,J)与(J,P)都可以作为候选码,属性相交AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)[例8]在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。问STJ属于几范式?【分析】函数依赖:
{(S,J)→T,(S,T)→J,T→J}(S,J)和(S,T)都是候选码AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)
JSJTSTSTJ中的函数依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)STJ∈3NF
没有任何非主属性对码传递依赖或部分依赖
STJ∈BCNFT是决定因素,T不包含码AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystemBCNF(续)解决方法?将STJ分解为二个关系模式:
ST(S,T)∈BCNF,TJ(T,J)∈BCNF
没有任何属性对码的部分函数依赖和传递函数依赖。SJSTTJTJAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF与BCNF的关系定理:如果R∈BCNF,则一定有R∈3NF。证明:由于若R∈BCNF,则R的所有非主属性都完全函数依赖于每一个候选码,因此必有R∈2NF。由于R∈2NF,若R∉3NF,则按3NF定义,一定存在非主属性对码的传递依赖。即存在:R的码X,属性组Y,以及非主属性Z(Z∈Y),使得X→Y,Y→Z,Y→X成立。由Y→Z,按BCNF定义,Y含有码,于是Y→X成立,这与Y→X矛盾。所以R∈3NF。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF与BCNF的关系
【小结】
若R∈BCNF,按定义排除了任何属性对码的传递依赖与部分依赖;所以R∈3NF。若R∈3NF,则R未必属于BCNF。
【定理】如果R∈3NF且R有唯一的候选码,则必有R∈BCNF。
证明:设R∈3NF且R有唯一候选键X’,则对于R的任何一个函数依赖X→Y,必有X包含于X’(否则存在传递函数依赖)。即对R的任何一个函数依赖X→Y,X都含候选码,故R∈BCNF。
有用的结论:如果R∈3NF,且R只有一个候选码,则R必属于BCNF。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3NF与BCNF的关系R∈BCNFR∈3NF如果R∈3NF,且R只有一个候选码
R∈BCNFR∈3NF充分不必要充分必要AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem练习题1.关系模式由3NF转化为BCNF是为了消除
。答:主属性对码的传递依赖和部分依赖。2.设关系模式R是全码,则R可达到第几范式?答:4NF。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3.关系R如右,则R至少属于()。
A.1NFB.2NFC.3NFD.BCNF4.任何一个二元关系都是BCNF这句话对吗?答案:是BCNF。二元关系中或为全为主属性,或为一个单属性为主属性。ABa1b1a2b2AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem
请判别以下结论是否正确?函数依赖X→Y给出了数据库中属性间的某种联系:从X的值应该知道与之联系的惟一Y值。若X不含码,则有麻烦了(BCNF)。码是一个元组区别于其他元组的依据,同时也是一个元组赖以存在的条件。在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可能存在码或码的一部分为空值的元组。若某关系模式的属性间有函数依赖X→Y,而X又不包含码,那么在具有相同X值的所有元组中,某个特定的Y值就会重复出现,这就产生了数据冗余。着重理解AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem随之而来的是更新异常问题;某个X值与某个特定的Y值相联系,这是数据库中应存储的信息,但由于X不含码,这种X与Y相联系的信息可能因为码或码的一部分为空值而不能作为一个合法的元组在数据库中存在,这是插入异常或删除异常问题。第二范式、第三范式和Boyce-Codd范式就是不同程度地限制关系模式中X不包含码的函数依赖X→Y的存在。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem补充函数依赖反映了“属性间”的联系。属性间的联系决定函数依赖关系。设X、Y均是U的子集:如果X、Y间是1:1关系,则存在函数依赖X←→Y如果X、Y间是1:n关系,则存在函数依赖:X→Y或Y→X。(多方为决定因素)如果X、Y间是m:n关系,则不存在函数依赖。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.7多值依赖[例9]有关系模式Teaching(C,T,B),语言:教学(课程,教师,参考书)某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem………课程C教员T参考书B
物理
数学
计算数学李勇王军
李勇张平
张平周峰
普通物理学光学原理物理习题集
数学分析微分方程高等代数
数学分析...…
多值依赖(续)非规范化关系描述AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem普通物理学光学原理物理习题集普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析微分方程高等代数…李勇李勇李勇王军王军王军李勇李勇李勇张平张平张平
…物理物理物理物理物理物理数学数学数学数学数学数学…参考书B教员T课程C多值依赖(续)用二维表表示关系TeachingAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)关系模式Teaching属于几范式?【分析】Teaching具有唯一候选码(C,T,B),即全码。【答】Teaching∈BCNF。关系模式Teaching是否存在异常?【答】有。【结论】关系模式属于BCNF仍然存在各类异常。【思考】是否存在函数依赖?产生异常原因?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)Teaching模式中存在的问题(1)数据冗余度大(2)插入操作复杂(3)删除操作复杂(4)修改操作复杂存在多值依赖AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)定义6.9
设R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖
X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。特别注意:“无关”的理解。例:Teaching(C,T,B)中是否存在C→→T?是否存在C→→B?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem例:Teaching(C,T,B,D)中D为教师T所在的教研室。问:1)是否存在C→→B?2)R中是否存在C→→T?3)是否存在C→→TD?答案:1)成立;
2)不成立
3)成立。【再思考】“无关”?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)等价的定义:
【多值依赖】在R(U)的任一关系r中,如果存在元组t,s使得t[X]=s[X],那么就必然存在元组w,vr,(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值所得的两个新元组w,v必在r中),则Y多值依赖于X,记为X→→Y。这里,X,Y是U的子集,Z=U-X-Y。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖的判定例:Teaching(C,T,B,D)中D为教师T所在的教研室。问:R中是否存在C→→T?是否存在C→→B?是否存在C→→TD?答:
1)C→→B成立。如果存在C→→B,在R中假定有2个元组(c1,t1,b1,d1)
和(c1,t2,b2,d2)则必有(c1,t2,b1,d2)和(c1,t1,b2,d1)也一定在R中。2)C→→T不成立。如果存在C→→T。在R中假定有2个元组(c1,t1,b1,d1)
和(c1,t2,b2,d2)则必有(c1,t1,b2,d2)与(c1,t2,b1,d1)也应该在关系R中,而显然不成立。3)C→→TD成立。如果C→→TD成立,在R中假定有2个元组(c1,t1,b1,d1)
和(c1,t2,b2,d2)则必有(c1,t1,b2,d1)与(c1,t2,b1,d2)也应该在R中。
显然R满足条件。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)平凡多值依赖和非平凡的多值依赖若X→→Y,而Z=Ø,则称X→→Y为平凡的多值依赖否则称X→→Y为非平凡的多值依赖。例:1.Teaching(C,T,B)中C→→T为
。
2.Teaching(C,T)中C→→T为
。
3.student(Sno,Sname)中Sno→Sname为
。
4.student(Sno,Sname,Sage)中Sno→Sname为
。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)[例10]关系模式WSC(W,S,C)
W表示仓库,S表示保管员,C表示商品假设每个仓库有若干个保管员,有若干种商品每个保管员保管所在的仓库的所有商品每种商品被所有保管员保管
AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)WSCW1S1C1W1S1C2W1S1C3W1S2C1W1S2C2W1S2C3W2S3C4W2S3C5W2S4C4W2S4C5AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖(续)W→→S且W→→C用下图表示这种对应
存在多值依赖否?AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem产生问题的原因是保管员S与商品C之间不是直接的联系,而是间接的联系。把有间接联系的属性放在一个模式中也会产生冗余和异常现象。例:请举出3个多值依赖的例子。答:1)任课-选修(课程,任课教师,选修的学生)
2)(学院,教师,学生)
……AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖的性质(1)多值依赖具有对称性; 若X→→Y,则X→→Z,其中Z=U-X-Y(2)多值依赖具有传递性; 若X→→Y,Y→→Z,则X→→Z–Y(3)函数依赖是多值依赖的特殊情况;(复制性) 若X→Y,则X→→Y。(4)(并规则)若X→→Y,X→→Z,则X→→YZ;(5)(交规则)若X→→Y,X→→Z,则X→→Y∩Z;(6)(差规则)若X→→Y,X→→Z,则X→→Y-Z,X→→Z-Y。【思考】函数依赖是否具有对称性?请举例说明。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem多值依赖与函数依赖的区别(1)
多值依赖的有效性与属性集的范围有关设:关系模式R(C,S,P,Y)
表示(课程,选课学生,先修课,该生选修先修课P
的年份)
码:CSP;F={SP→Y}问题:1) 在R上C→→S、C→→P是否成立?
答:不成立。例如R中有两个元组:(c1,s1,p1,2001);(C1,s2,p2,2002)
若C→→P成立,必有(c1,s1,p2,2001)与(c1,s2,p1,2002)成立,而此不一定成立。实际上,S1选修p2的年份可能是1999。同理C→→S也未必成立。
2)在R1(C,S,P)上C→→S、C→→P是否成立?答:成立。C→→P:对不同学生而言,每门课的先修课是一样的。
C→→S:一门课由哪一组学生选修,与这门课的先修课是什么无关。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem(2)
若函数依赖X→Y在R(U)上成立,则对于任何Y'Y均有X→Y'成立多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y'Y有X→→Y'成立。由以上分析可得知:C→→S、C→→P在R上不成立,但在R的一个子集(C,S,P)上成立,故C→→S、C→→P是R的嵌入型多值依赖。例如:Teaching(C,T,B,D)中C→→TD成立,而C→→T不成立。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.84NF定义6.10关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(YX),X都含有码,则R∈4NF。例:请判别正误“4NF消除了多值依赖”。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem【4NF注释】请观察4NF是允许否有多值依赖?答:a.允许有平凡的多值依赖;
b.允许有特殊的非平凡多值依赖——函数依赖;4NF不允许有
多值依赖。答:4NF不允许有“不是函数依赖的非平凡的”多值依赖。定义6.10关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(YX),X都含有码,则R∈4NF。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem4NF(续)例:请判别Teaching(C,T,B)最高达到第几范式?答:Teaching(C,T,B)∈4NF;【分析】存在非平凡的多值依赖C→→T,且C不是码。可用投影分解法把Teaching分解为如下两个关系模式:
CT(C,T),CT(C,B)。其中,
CT(C,T)∈4NF CB(C,B)∈4NFC→→T,C→→B是平凡多值依赖【定理】如果R∈4NF,则R∈BCNF。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖6.2.84NF6.2.9规范化小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.2.9规范化小结关系数据库的规范化理论是数据库逻辑设计的工具目的:尽量消除数据冗余、插入异常、删除异常、修改复杂基本思想:逐步消除数据依赖中不合适的部分实质:概念的单一化。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem规范化小结(续)关系模式规范化的基本步骤
1NF ↓消除非主属性对码的部分函数依赖消除决定属性2NF集非码的非平↓消除非主属性对码的传递函数依赖凡函数依赖3NF ↓消除主属性对码的部分和传递函数依赖
BCNF ↓消除非平凡且非函数依赖的多值依赖
4NFAnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem规范化小结(续)不能说规范化程度越高的关系模式就越好在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式上面的规范化步骤可以在其中任何一步终止AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem第六章关系数据理论6.1问题的提出6.2规范化6.3数据依赖的公理系统*6.4模式的分解6.5小结AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.3数据依赖的公理系统Armstrong公理
1.内容
2.有效性的含义
3.完备性的含义2.函数依赖集的闭包
1.概念
2.属性集关于函数依赖的闭包
3.最小函数依赖集AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem6.3数据依赖的公理系统【逻辑蕴含】
对于满足一组函数依赖F
的关系模式R,其任何一个关系r,若函数依赖X→Y都成立,则称F逻辑蕴含X→Y。数据依赖的公理系统是模式分解的理论基础。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem1.Armstrong公理系统
关系模式R<U,F>来说有以下的推理规则:A1.自反律:若Y
X
U,则X→Y为F所蕴含。A2.增广律:若X→Y为F所蕴含,且Z
U,则XZ→YZ为F所蕴含。A3.传递律:若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。注意:1.Armstrong公理系统是函数依赖的推理系统。2.由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。【Armstrong公理系统】AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem定理6.1Armstrong推理规则是正确的(l)自反律:若Y
X
U,则X→Y为F所蕴含。
【证】:设Y
X
U
对R<U,F>
的任一关系r中的任意两个元组t,s:若t[X]=s[X],由于Y
X,有t[y]=s[y],所以X→Y成立,自反律得证。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem定理6.lArmstrong推理规则是正确的(续)(2)增广律:若X→Y为F所蕴含,且Z
U,则XZ→YZ为F所蕴含。
【证】:设X→Y为F所蕴含,且Z
U。设R<U,F>
的任一关系r中任意的两个元组t,s:若t[XZ]=s[XZ],则有t[X]=s[X]和t[Z]=s[Z];由X→Y,于是有t[Y]=s[Y],所以t[YZ]=s[YZ],所以XZ→YZ为F所蕴含,增广律得证。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem定理6.lArmstrong推理规则是正确的(续)(3)传递律:若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。【证】:设X→Y及Y→Z为F所蕴含。对R<U,F>
的任一关系r中的任意两个元组t,s:若t[X]=s[X],由于X→Y,有t[Y]=s[Y];再由Y→Z,有t[Z]=s[Z],所以X→Z为F所蕴含,传递律得证。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem2.导出规则1.根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则:由X→Y,X→Z,有X→YZ。(A2,A3)
伪传递规则:由X→Y,WY→Z,有XW→Z。(A2,A3)
分解规则:由X→Y及ZY,有X→Z。(A1,A3)AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem导出规则2.根据合并规则和分解规则,可得引理6.1【引理6.l】X→A1A2…Ak成立的充分必要条件是
X→Ai成立(i=l,2,…,k)。AnIntroductiontoDatabaseSyAnIntroductiontoDatabaseSystem3.函数依赖闭包【函数依赖集的闭包】在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为F+。例:已知F={XY,Xz},求F+。解:…AnIntroductiontoDatabaseSyAnIntroductiontoDatabase
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论