
关系数据库设计理论ppt课件.ppt
87页第五章 关系数据库设计实际 关系数据库设计实际是关系数据库的指南,也是关系关系数据库设计实际是关系数据库的指南,也是关系数据库的实际根底它是数据库领域的专家和学者们总结数据库的实际根底它是数据库领域的专家和学者们总结数据库设计中的阅历教训的根底上,借助近代数学工具而数据库设计中的阅历教训的根底上,借助近代数学工具而提出来的它把笼统的数学实际和详细的实践问题结合起提出来的它把笼统的数学实际和详细的实践问题结合起来,为数据库领域的开展起到了推进作用来,为数据库领域的开展起到了推进作用意义:意义: 提供分析和判别数据库方式好坏的准那么;提供分析和判别数据库方式好坏的准那么; 指点设计好的数据库方式指点设计好的数据库方式位置:位置:本章是本书最难的部分之一,但对于运用设计非常有用本章是本书最难的部分之一,但对于运用设计非常有用5.1 5.1 问题的提出-什么是不好的数据库设计问题的提出-什么是不好的数据库设计实践问题,假定在设计数据库时呈现如下的关系方式:实践问题,假定在设计数据库时呈现如下的关系方式:StudentStudent〔〔Sno, Sname, DeptSno, Sname, Dept,,Cno, GradeCno, Grade〕〕学生〔学号,姓名,院系,课程号,成果〕学生〔学号,姓名,院系,课程号,成果〕SnoSnoSnameSnameDeptDeptCnoCnoGradeGrade10001000李平李平计算机计算机001001868610001000李平李平计算机计算机002002979710001000李平李平计算机计算机003003838310011001王莉王莉计算机计算机001001808010011001王莉王莉计算机计算机0020027575上述的关系方式在实践运用中会呈现什么样的问题呢?上述的关系方式在实践运用中会呈现什么样的问题呢?1 1、数据存在冗余、数据存在冗余 该关系方式中,学生每选一门课,他的名字和院系就该关系方式中,学生每选一门课,他的名字和院系就要反复存放一次。
而且,假设他的院系改动的话,那么对要反复存放一次而且,假设他的院系改动的话,那么对于其的每一个元组的院系都要改动这样不只增添了更新于其的每一个元组的院系都要改动这样不只增添了更新代价,而且还有能够呈现一个人在不同院系的情况代价,而且还有能够呈现一个人在不同院系的情况2 2、插入〔删除〕异常、插入〔删除〕异常 该关系方式的主键应该是由学生学号和课程号共同构该关系方式的主键应该是由学生学号和课程号共同构成按照常理,新学生登记注册,应该在学生信息库里存成按照常理,新学生登记注册,应该在学生信息库里存在他的资料,但假设此时他还未选课,那么关于这个学生在他的资料,但假设此时他还未选课,那么关于这个学生的信息就不能创建,这是违犯现实的情况的的信息就不能创建,这是违犯现实的情况的3 3、更新复、更新复杂 假假设某个学生某个学生转换所在系,那么和他一切的相关的所在系,那么和他一切的相关的记录都必需都必需进展修正而且,容易构成潜在的数据不一致的展修正而且,容易构成潜在的数据不一致的问题比如比如‘‘李平李平’’的的记录,能,能够会只修正了其中一部分元会只修正了其中一部分元组。
结论::StudentStudent关系方式不是一个好的方式关系方式不是一个好的方式好〞的方式:好〞的方式:不会不会发生插入异常、生插入异常、删除异常、更新异常,除异常、更新异常,数据冗余数据冗余应尽能尽能够少缘由:由存在于方式中的某些数据依由:由存在于方式中的某些数据依赖引起的引起的处置方法:置方法:经过分解关系方式来消除其中不适宜分解关系方式来消除其中不适宜 的数据依的数据依赖由此可见,一个关系方式假设设计的不合理,将会构成很多由此可见,一个关系方式假设设计的不合理,将会构成很多问题假设我们将上述的关系方式进展分解:问题假设我们将上述的关系方式进展分解: Student Student〔〔Sno, SnameSno, Sname,,DeptDept〕〕 SC SC〔〔Sno, Cno, GradeSno, Cno, Grade〕〕分解以后可以处置上述的问题但是上述关系方式在有些情分解以后可以处置上述的问题但是上述关系方式在有些情况下也不是最优的详细的关系方式的设计不只需结合数据况下也不是最优的。
详细的关系方式的设计不只需结合数据库设计实际,也还要根据实践的运用来决策库设计实际,也还要根据实践的运用来决策关系方式的方式化定义关系方式的方式化定义关系方式由五部分组成,即它是一个五元组:关系方式由五部分组成,即它是一个五元组: R R〔〔U, D, DOM, FU, D, DOM, F〕〕R R:: 关系名关系名U U:: 组成该关系的属性名集合组成该关系的属性名集合D D:: 属性组属性组U U中属性所来自的域中属性所来自的域DOMDOM:: 属性向域的映象集合属性向域的映象集合F F:: 属性间数据的依赖关系集合属性间数据的依赖关系集合什么是数据依赖什么是数据依赖1.完好性约束的表现方式限定属性取值范围:例如学生成果必需在0-100之间定义属性值间的相互关连〔主要表达于值的相等与否〕,这就是数据依赖,它是数据库方式设计的关键2. 数据依赖是经过一个关系中属性间值的相等与否表达出来的数据间的相互关系是现实世界属性间相互联络的笼统是数据内在的性质是语义的表达3. 3. 数据依赖的类型数据依赖的类型函数依赖〔函数依赖〔Functional DependencyFunctional Dependency,简记为,简记为FDFD〕〕多值依赖〔多值依赖〔Multivalued DependencyMultivalued Dependency,简记为,简记为MVDMVD〕〕其他其他5.2 5.2 规范化实际规范化实际 规范化实际正是用来改造关系方式,经过分解关系方式来消规范化实际正是用来改造关系方式,经过分解关系方式来消除其中不适宜的数据依赖,以处置插入异常、删除异常、更新异除其中不适宜的数据依赖,以处置插入异常、删除异常、更新异常和数据冗余问题。
常和数据冗余问题v 函数依赖函数依赖一、属性间的联络一、属性间的联络 客观世界中的事物是彼此联络,相互制约的这种联客观世界中的事物是彼此联络,相互制约的这种联系分为两类:一类是实体与实体之间的联络;另一类是实系分为两类:一类是实体与实体之间的联络;另一类是实体内部各属性之间的联络体内部各属性之间的联络属性之间的联络分为三类:属性之间的联络分为三类:1 1、、1 1--1 1:例假设学生关系方式中没有同名景象,那么学号和:例假设学生关系方式中没有同名景象,那么学号和姓名两个属性之间的关系是一对一的关系姓名两个属性之间的关系是一对一的关系2 2、、1 1--M M:例一个院系有多个人,但是单个人只能属于一个:例一个院系有多个人,但是单个人只能属于一个院系,那么院系和人的学号之间的关系是一对多的院系,那么院系和人的学号之间的关系是一对多的3 3、、M M--N N:一个课程号对应于多个学号,一个学号对应于多:一个课程号对应于多个学号,一个学号对应于多个课程号,这两个属性之间是多对多的联络个课程号,这两个属性之间是多对多的联络二、函数依赖的定义二、函数依赖的定义定义:设有关系方式定义:设有关系方式R〔〔U〕,〕,X和和Y是属性集是属性集U的子集,的子集,r是是R上的任一详细关系,上的任一详细关系,u和和v是是r中的恣意两个元组。
假设由中的恣意两个元组假设由u[X]=v[X]能推导出能推导出u[Y]=v[Y],那么称,那么称X函数决议函数决议Y,或,或Y函函数依赖于数依赖于X,记为,记为例:有一个学习方式例:有一个学习方式 R R〔〔S#,SNAME,C#,GRADE,TNAME,TAGES#,SNAME,C#,GRADE,TNAME,TAGE〕〕如今规定,每个学号只对应一个详细学生,每个课程号只如今规定,每个学号只对应一个详细学生,每个课程号只由一个教师来教,写出函数依赖由一个教师来教,写出函数依赖GRADE)C#,(S#->TNAMEC#->SNAMES# ->三、属性三、属性间的的联络和函数依和函数依赖属性属性间的的联络有三种,但并不是每一种关系中都存在函数有三种,但并不是每一种关系中都存在函数依依赖,,设有属性集有属性集X、、Y属于关系方式属于关系方式R,, 假假设X和和Y之之间是是‘1--1’关系,那么存在函数依关系,那么存在函数依赖::假假设X X和和Y Y之之间是是‘1‘1--M’M’关系,那么存在函数依关系,那么存在函数依赖::假假设X X和和Y Y之之间是是‘N‘N--M’M’关系,那么:关系,那么:X X和和Y Y之之间不存在函数依不存在函数依赖例:假设人名独一的话,那么一个人名对应一个学号,那么有例:假设人名独一的话,那么一个人名对应一个学号,那么有例:院系和学号之间的联络是一对多的,那么存在的例:院系和学号之间的联络是一对多的,那么存在的FDFD为为四、四、FDFD的逻辑蕴涵的逻辑蕴涵定义:设定义:设F F是在关系方式是在关系方式R R上成立的函数依赖集,上成立的函数依赖集, 是一个是一个FDFD。
假设对于假设对于R R的每个满足的每个满足F F的关系也满足的关系也满足 , ,那么称那么称F F逻辑蕴涵逻辑蕴涵 ,记为,记为定义:被定义:被F F逻辑蕴涵的函数依赖的全体构成的集合,称为逻辑蕴涵的函数依赖的全体构成的集合,称为函数依赖集的闭包,记为函数依赖集的闭包,记为F+F+五、五、FDFD的推理规那么的推理规那么从的从的FDFD集推导未知的集推导未知的FDFD,可以运用的推导规那么,可以运用的推导规那么〔〔ArmstrongArmstrong〕〕设有关系方式设有关系方式R R〔〔U U〕,〕,X X、、Y Y、、Z Z是是U U的子集:的子集:A1A1〔自反性〕:假设〔自反性〕:假设 ,那么有,那么有 在在R R上成立A2A2〔增广性〕:假设〔增广性〕:假设 在在R R上成立,那么有上成立,那么有A3A3〔传送性〕:假设〔传送性〕:假设 在在R R上成立,那么有上成立,那么有 证明证明ArmstrongArmstrong公理,用公理,用FDFD定义:定义:A1A1:设:设u,vu,v是是r r中的恣意两个元组,假设中的恣意两个元组,假设u[X]=v[X]u[X]=v[X],那么,那么u,vu,v中的中的X X的恣意子集也必然相等,由条件中的恣意子集也必然相等,由条件中u[Y]=v[Y]u[Y]=v[Y],根据,根据函数依赖的定义,可以得到函数依赖的定义,可以得到A2A2:设:设u,vu,v是是r r中的恣意两个元组,设中的恣意两个元组,设u[XZ]=v[XZ]u[XZ]=v[XZ],即,即u[X]u[Z]=v[X]v[Z]u[X]u[Z]=v[X]v[Z],那么,那么u[X]=v[X],u[Z]=v[Z]u[X]=v[X],u[Z]=v[Z],由条件,由条件根据函数依赖定义有根据函数依赖定义有u[Y]=v[Y],u[Y]=v[Y],那么那么u[YZ]=u[Y]u[Z]=u[YZ]=u[Y]u[Z]=v[Y]v[Z]=v[YZ]v[Y]v[Z]=v[YZ]这样在这样在u[XZ]=v[XZ]u[XZ]=v[XZ]的根底上推出了的根底上推出了u[YZ]=v[YZ]u[YZ]=v[YZ],得证。
得证A3A3:设:设u,vu,v是是r r中的恣意两个元组,对于中的恣意两个元组,对于u[X]=v[X]u[X]=v[X],,由于由于 ,那么有,那么有u[Y]=v[Y]u[Y]=v[Y],又由于,又由于 那么根据定那么根据定义可以得出义可以得出u[Z]=v[Z]u[Z]=v[Z],因此得到,因此得到例题:关系例题:关系R R〔〔X,Y,ZX,Y,Z〕以及其上的函数依赖集〕以及其上的函数依赖集F F,求,求F+F+FDFD的分类:的分类:1 1、、对于于FDFD:: ,假,假设 ,那么称,那么称为““平凡的平凡的FDFD〞〞2 2、、对于于FDFD:: ,假,假设 ,那么称,那么称为““非平凡的非平凡的FDFD〞〞3 3、、对于于FDFD:: ,假,假设 那么那么为““完全非平凡的完全非平凡的FDFD〞〞ArmstrongArmstrong的推论:的推论:1 1、合并规那么:、合并规那么:2 2、分解规那么:、分解规那么:3 3、伪传送规那么:、伪传送规那么:合并规那么:合并规那么:分解规那么:分解规那么:伪传送规那么:伪传送规那么:* * 用函数依赖定义键用函数依赖定义键Ø 超超键:能独一:能独一标识元元组的属性集称的属性集称为关系方式的超关系方式的超键。
Ø 候候选键:假:假设一个属性集能独一一个属性集能独一标识元元组,且不含有多,且不含有多Ø 余的属性,那么余的属性,那么这个属性集成个属性集成为候候选键Ø定定义:假:假设关系方式关系方式R R的属性集的属性集为A1,A2,…AnA1,A2,…An,,F F是是R R上成立上成立Ø的一个的一个FDFD集,集,X X是是A1,A2,…AnA1,A2,…An的一个子集,假的一个子集,假设X X-->A1,A2,>A1,A2,Ø…An…An在在F+F+中,那么称中,那么称X X是是R R的一个超的一个超键假设X X-->A1,A2,…An>A1,A2,…AnØ在在F+F+中,且中,且对于于X X的任何一个真子集的任何一个真子集X1X1,, X1 X1-->A1,A2,…An>A1,A2,…AnØ在都不在在都不在F+F+中,那么称中,那么称X X是是R R的一个候的一个候选键属性集的闭包属性集的闭包定义:设定义:设F F是属性集是属性集U U上的上的FDFD集,集,X X是是U U的子集,那么属性集的子集,那么属性集X X的闭包的闭包X+X+,它是一个从,它是一个从F F集运用集运用FDFD推导规那么推出的一切满推导规那么推出的一切满足足X X-->A>A的属性集的属性集A A的集合:的集合:定理:定理:X X-->Y>Y能用能用FDFD推理推理规那么推出的充沛必要条件是那么推出的充沛必要条件是证明:〔充沛性〕根据明:〔充沛性〕根据 ,,设Y=A1,A2,…,AnY=A1,A2,…,An。
由属性集由属性集闭包定包定义可知:可知:X X-->Ai>Ai在在F+F+中再根据合并中再根据合并规那么,那么,X X-->A1,>A1,A2,…,An A2,…,An 即即X X-->Y>Y〔必要性〕由〔必要性〕由X X-->Y>Y,根据分解,根据分解规那么,那么,X X-->Ai>Ai,根据属性集,根据属性集闭包定包定义可得可得 ,所以,所以 ,即,即* *用属性集的闭包来定义候选键用属性集的闭包来定义候选键定定义:假:假设关系方式关系方式R R的属性集的属性集为U U,,F F是是R R上成立的一个上成立的一个FDFD集,集,X X是是U U的一个子集,假的一个子集,假设X X的属性集的的属性集的闭包包X+ =U,X+ =U,那么那么称称X X为R R的一个超的一个超键,假,假设对于于X X的任何一个真子集的任何一个真子集Y Y,,有有Y+≠UY+≠U那么X X为R R的一个候的一个候选键算法:求属性集算法:求属性集X X关于关于FDFD集集F F的闭包的闭包X+X+输入:属性集输入:属性集U U,,U U上的上的FDFD集集F F,,X X是是U U的子集的子集输出:输出:X X关于关于F F的闭包的闭包X X++方法:方法: Result:=X; Result:=X; repeat repeat for F for F 中的每个中的每个FD YFD Y-->Z do>Z do if then Result:=Result U Z; if then Result:=Result U Z; until until 〔〔result result 没有改动〕;没有改动〕; Result Result 即为所求的即为所求的X+X+例:属性集例:属性集U U为为ABCDABCD,,FDFD集为集为 , ,求求A+,AD+ A+,AD+ A+ A+ 〔〔1 1〕〕 Result=A Result=A 〔〔2 2〕〕 Result=A U B =AB Result=A U B =AB 〔〔3 3〕〕 Result=AB U C =ABC Result=AB U C =ABCAD+ = ABCDAD+ = ABCD例题:例题:求求BD+BD+1 1〕〕 result=BD, AB result=BD, AB不含于不含于resultresult,,result=BDresult=BD2 2〕〕 result=BD result=BD,,D D包含于包含于result,result =BD U EG=BDEGresult,result =BD U EG=BDEG3 3〕〕 result=BDEG result=BDEG,,C C不含于不含于result,result=BDEGresult,result=BDEG4 4〕〕 result=BDEG result=BDEG,,BEBE包含于包含于result,result =BDEG U C=BCDEGresult,result =BDEG U C=BCDEG5 5〕〕 result=BCDEG,BC result=BCDEG,BC包含于包含于result,result=BCDEG U D=BCDEGresult,result=BCDEG U D=BCDEG6 6〕〕 result=BCDEG,CG result=BCDEG,CG包含于包含于result,result=BCDEG U BD=BCDEGresult,result=BCDEG U BD=BCDEG7 7〕〕 result=BCDEG,ACD result=BCDEG,ACD不含于不含于result,result=BCDEGresult,result=BCDEG8 8〕〕 result=BCDEG,CE result=BCDEG,CE 含于含于result,result=BCDEGUAG=ABCDEGresult,result=BCDEGUAG=ABCDEG* 快速求解候选键的充沛条件快速求解候选键的充沛条件对于于给定的关系方式定的关系方式R=R=〔〔A1,A2,…,AnA1,A2,…,An〕和函数依〕和函数依赖集集F F,,可将其属性分可将其属性分为四四类::1 1、、仅仅出如今出如今F F的函数依的函数依赖左部的属性左部的属性L L类;;2 2、、仅仅出如今出如今F F的函数依的函数依赖右部的属性右部的属性R R类;;3 3、在、在F F的函数依的函数依赖的左右两的左右两边都没有呈都没有呈现的属性的属性N N类;;4 4、在、在F F的函数依的函数依赖的左右两的左右两边都呈都呈现的属性的属性LRLR类;;定理:对于给定关系方式定理:对于给定关系方式R R及其函数依赖集及其函数依赖集F F〔不包含平凡〔不包含平凡FDFD〕〕1 1〕〕 X X是是L L类属性,那么类属性,那么X X必为必为R R的任何一个候选键的成员。
的任何一个候选键的成员2 2〕〕 X X是是R R类属性,那么类属性,那么X X不包含在任何候选键中不包含在任何候选键中3 3〕〕 X X是是R R的的N N类属性,那么类属性,那么X X也必为也必为R R的任何一个候选键的成员的任何一个候选键的成员4 4〕〕 X X是是R R的的LRLR类属性,那么类属性,那么X X能够是也能够不是候选键的成员能够是也能够不是候选键的成员1 1〕〕 反证法:设反证法:设W W为为R R的任一候选键,的任一候选键,X X不是不是W W的成员由于的成员由于X X仅仅出如今仅仅出如今F F的函数依赖左部,所以的函数依赖左部,所以R R中没有其它属性能中没有其它属性能够函数决议够函数决议X X,这样,这样W+W+中就不能够包含中就不能够包含X X,这样就与,这样就与W W是是R R的的候选键相矛盾所以候选键相矛盾所以X X必然是候选键必然是候选键W W的成员〔〔X X为为L L类的情况〕类的情况〕2 2〕〕 反证法:设反证法:设W W是是R R的任一候选键,的任一候选键,X X不是不是W W的成员由于的成员由于X X没有出如今没有出如今F F中,那么中,那么R R中没有其它属性可以函数决议中没有其它属性可以函数决议X X。
这样这样W+W+中就不能够包含中就不能够包含X X,这与,这与W W是是R R的候选键相矛盾所以的候选键相矛盾所以X X必然是候选键必然是候选键W W的成员〔〔X X是是N N类的情况〕类的情况〕例:设有关系方式例:设有关系方式R R〔〔A,B,C,DA,B,C,D〕,其函数依赖集〕,其函数依赖集F F如下,如下,求求R R的候选键的候选键传统步骤:传统步骤:1 1、分别求、分别求A/B/C/D/AB/AC/AD/BC/BD/CDA/B/C/D/AB/AC/AD/BC/BD/CD ABC/ABD/ACD/BCD/ABCD ABC/ABD/ACD/BCD/ABCD的属性集的的属性集的 闭包 2 2、根据候选键定义找出候选键根据候选键定义找出候选键快速步骤:快速步骤:1、、L类类L类类:A,C LR类类: B,D 〔〔AC〕〕+=ABCD 所以所以AC是关系方式是关系方式R的独一候选键的独一候选键求解候选键的步骤求解候选键的步骤1、根据关系方式上成立的、根据关系方式上成立的FD集确定属性的类型。
集确定属性的类型2、根据属性类型求属性集的闭包根据属性类型求属性集的闭包3、满足候选键定义条件的即为所求的候选键留意有些、满足候选键定义条件的即为所求的候选键留意有些情况下候选键不是独一的情况下候选键不是独一的例:设有关系方式例:设有关系方式R R〔〔A,B,C,DA,B,C,D〕,〕,F F是是R R上成立的上成立的FDFD集,试写集,试写出出R R的一切候选键的一切候选键解答:分析解答:分析R R的属性类型:的属性类型: 求解属性集闭包:求解属性集闭包:* *练习练习1 1、给定关系方式、给定关系方式R R 〔〔ABCDEGABCDEG〕,〕,R R上成立的上成立的FDFD集集①①求求D+,C+,A+,CD+,AD+,AC+,ACD+D+,C+,A+,CD+,AD+,AC+,ACD+②②求出求出R R的一切候的一切候选键解:解:① D① D+=〔+=〔DGDG〕〕 C+= C+=〔〔ABCABC〕〕 A+ = A+ =〔〔ABAB〕〕 〔〔ADAD〕〕+=+=〔〔ABDGABDG〕〕 〔〔ACAC〕〕+=+=〔〔ABCABC〕〕 〔〔ACDACD〕〕+=+=〔〔ABCDEGABCDEG〕〕②②首先确定关系首先确定关系R R的属性的属性类型型 L L类::C,D C,D ;;LRLR类::A A ;;R R类::B,E,GB,E,G〔〔CDCD〕〕+=+=〔〔ABCDEGABCDEG〕,所以〕,所以R R的候的候选键是是CDCD。
2 2、设关系方式、设关系方式R R〔〔ABCDABCD〕上的函数依赖集为〕上的函数依赖集为F F,并且,并且① ① 求求R R的一切候的一切候选键② ② 求求R R的一切不是候的一切不是候选键的超的超键① L① L类::B B ;;LRLR类::A,C,DA,C,D 〔〔B B〕〕+=+=〔〔B B〕,〔〕,〔ABAB〕〕+=+=〔〔ABCDABCD〕;〕; 〔〔BCBC〕〕+=+=〔〔ABCDABCD〕;〔〕;〔BDBD〕〕+=+=〔〔ABCDABCD〕〕②②一切不是候一切不是候选键的超的超键 ABC, ABD, BCD, ABCD ABC, ABD, BCD, ABCDv 规范化规范化 关系必需是规范化的通常按属性间依赖情况,来区关系必需是规范化的通常按属性间依赖情况,来区分关系规范化的程度为第一范式,第二范式,第三范式等分关系规范化的程度为第一范式,第二范式,第三范式等术语和记号:术语和记号:Y Y定定义:在关系:在关系R R〔〔U U〕中,假〕中,假设 ,并且,并且对于于X X的任何一个的任何一个真子集真子集X’X’都有都有 ,那么称,那么称Y Y对X X完全函数依完全函数依赖。
定定义:假:假设 ,但,但Y Y不完全函数依不完全函数依赖于于X X,那么称,那么称Y Y对X X部部分函数依分函数依赖定定义:在:在R R〔〔U U〕中,假〕中,假设 , , ,那么,那么称称Z Z对X X传送函数依送函数依赖定定义:包含在任何一个候:包含在任何一个候选键中的属性,叫做主属性不包中的属性,叫做主属性不包含在任何候含在任何候选键中的属性称中的属性称为非主属性非主属性X’ YX’ YY XY XØ 范式范式 关系数据库中的关系是要满足一定的要求的满足不关系数据库中的关系是要满足一定的要求的满足不同的要求称为不同的范式满足最低要求的称为第一范式,同的要求称为不同的范式满足最低要求的称为第一范式,简称简称1NF1NF在第一范式中满足进一步的要求的称为第二范在第一范式中满足进一步的要求的称为第二范式,其他以此类推式,其他以此类推 对于各种范式之间的联络有:对于各种范式之间的联络有:对某一关系方式对某一关系方式R R,它属于第几范式,记为,它属于第几范式,记为1NF1NF-定义:假设一个关系方式-定义:假设一个关系方式R R的每个详细关系的每个详细关系r r的每个的每个属性值都是不可再分的最小数据单位,称属性值都是不可再分的最小数据单位,称R R满足满足1NF1NF,,r r为为1NF1NF关系。
关系1NF2NF定义:假设定义:假设 ,且,且R R的每一个非主属性完全函数依的每一个非主属性完全函数依赖于任一候选键,称赖于任一候选键,称R R是满足第二范式的关系方式是满足第二范式的关系方式例:设有关系方式例:设有关系方式SLCSLC〔〔Sno, Dept, Dom, Cno, GradeSno, Dept, Dom, Cno, Grade〕〕其中其中DomDom为宿舍楼,并规定一个系的同窗住在同一栋楼为宿舍楼,并规定一个系的同窗住在同一栋楼写出关系方式中存在的函数依赖,求候选键断定该关写出关系方式中存在的函数依赖,求候选键断定该关系方式能否是系方式能否是2NF2NF解:存在的函数依赖有:解:存在的函数依赖有:L L类:类:Sno,Cno Sno,Cno ;;LRLR类:类:Dept Dept ;;R R类:类:Dom,GradeDom,Grade而且〔而且〔Sno,CnoSno,Cno〕〕+=+=〔〔Sno,Cno,Dept,Dom,GradeSno,Cno,Dept,Dom,Grade〕,〕,所以所以Sno,CnoSno,Cno为候选键为候选键。
主属性:主属性:Sno, CnoSno, Cno非主属性:非主属性:Dept, Dom, GradeDept, Dom, Grade由于由于 所以所以DomDom和和DeptDept都不完全函都不完全函数依赖于候选键〔数依赖于候选键〔Sno,CnoSno,Cno〕,所以〕,所以R R不满足不满足2NF2NF定义,最高定义,最高只到达只到达1NF1NF****那么不满足那么不满足2NF2NF的关系方式能够产生的问题:的关系方式能够产生的问题:1 1、插入异常:假设某学生未选课,该学生的信息记录就不、插入异常:假设某学生未选课,该学生的信息记录就不能被创建,由于短少主键的能被创建,由于短少主键的CnoCno这一部分值这一部分值2 2、删除异常:假设某个要删除某个学生的选课信息,必然、删除异常:假设某个要删除某个学生的选课信息,必然会将其固有信息即院系和宿舍楼信息删除,构成删除异常会将其固有信息即院系和宿舍楼信息删除,构成删除异常3 3、修正复杂假设某个学生需求转系,本只需求修正、修正复杂假设某个学生需求转系,本只需求修正DeptDept分量的值,但由于分量的值,但由于DomDom值依赖于值依赖于DeptDept,所以,所以DomDom的值也要修的值也要修改,而且该学生选多少们课就要修正多少条记录。
改,而且该学生选多少们课就要修正多少条记录4 4、存储冗余,对每一次的选课都要存储学生其他信息存储冗余,对每一次的选课都要存储学生其他信息将上述方式分解为:将上述方式分解为:SCSC〔〔Sno, Cno, GradeSno, Cno, Grade〕〕 SD SD〔〔Sno, Dept, DomSno, Dept, Dom〕〕SnoSnoCnoCnoGradeGradeDeptDeptDomDomSnoSnoSCSC中的中的FDFDSDSD中的中的FDFD分解为满足分解为满足2NF2NF的多个关系方式后,得到的新的关系方式的多个关系方式后,得到的新的关系方式假设不满足假设不满足3NF3NF,依然能够存在问题,:,依然能够存在问题,:这里分解得到的这里分解得到的SDSD中存在以下问题中存在以下问题1 1、数据有冗余:每个系的学生都住在同一个地方,但是、数据有冗余:每个系的学生都住在同一个地方,但是系的信息将会反复呈现,反复次数相当于学生的人数系的信息将会反复呈现,反复次数相当于学生的人数2 2、插入异常:假设某个系刚刚成立,还未有学生注册,、插入异常:假设某个系刚刚成立,还未有学生注册,那么该系的信息无法插入该系的信息入库。
那么该系的信息无法插入该系的信息入库3 3、删除异常:假设某个系的学生都毕业了,在删除该系的、删除异常:假设某个系的学生都毕业了,在删除该系的学生信息的时候,会将该系的信息删除掉学生信息的时候,会将该系的信息删除掉4 4、修正复杂:当学校调整学生宿舍时,把外语系的学生全、修正复杂:当学校调整学生宿舍时,把外语系的学生全部迁到另外一栋楼,那么需求修正的记录是该系的一切学生部迁到另外一栋楼,那么需求修正的记录是该系的一切学生因此满足因此满足2NF2NF的关系方式在某些情况下依然不是最好的的关系方式在某些情况下依然不是最好的3NF定义:关系方式定义:关系方式R R〔〔U U〕满足〕满足2NF2NF,且它的任何一个非主属性都,且它的任何一个非主属性都不传送依赖于任何候选键,那么称不传送依赖于任何候选键,那么称R R为满足为满足3NF3NF的关系方式的关系方式上述的上述的SCSC中没有第三方属性,所以不存在传送函数依赖,中没有第三方属性,所以不存在传送函数依赖,但是在但是在SDSD中,中,DomDom经过经过DeptDept传送函数依赖于传送函数依赖于SnoSno,所以,所以SCSC满满足足3NF3NF,而,而SDSD不满足不满足3NF3NF。
,Dom Sno,Dom Sno处置方法:分解处置方法:分解SDSD为以下两个为以下两个 SD SD〔〔Sno, DeptSno, Dept〕〕 DD DD〔〔Dept, DomDept, Dom〕〕分解以后的两个关系方式都满足分解以后的两个关系方式都满足3NF3NF一个满足一个满足3NF3NF的关系方式也不一定是最好的,例如在关系的关系方式也不一定是最好的,例如在关系方式方式STJSTJ〔〔 S,T,J S,T,J 〕中,〕中,S S表示学生,表示学生,T T表示教师,表示教师,J J表示课表示课程假设每一个教师只教一门课但是每门课由假设干教师程假设每一个教师只教一门课但是每门课由假设干教师教,某一学生选定某门课,就确定了一个固定的教师,于教,某一学生选定某门课,就确定了一个固定的教师,于是存在的函数依赖如下是存在的函数依赖如下: :根据函数依赖可以求出该根据函数依赖可以求出该STJSTJ的候选键为〔的候选键为〔S,JS,J〕或者〔〕或者〔S,TS,T〕,〕,此时的关系方式中的一切属性是主属性,那么关系方式满足此时的关系方式中的一切属性是主属性,那么关系方式满足3NF3NF。
但是该关系方式在有时依然存在一些问题:但是该关系方式在有时依然存在一些问题:1 1、插入异常:假设某个教师开设了某门课,但是没人选,、插入异常:假设某个教师开设了某门课,但是没人选,那么有关信息无法存入数据库那么有关信息无法存入数据库2 2、删除异常:选了某门课程的学生全部毕业,该信息丧失、删除异常:选了某门课程的学生全部毕业,该信息丧失3 3、数据冗余大:教师信息根据选课的学生人数要存储屡次、数据冗余大:教师信息根据选课的学生人数要存储屡次4 4、修正复杂:教师所授课程改名后,一切选该课的记录都、修正复杂:教师所授课程改名后,一切选该课的记录都要改BCNF定义:关系方式定义:关系方式 ,,F F是关系方式是关系方式R R的函数依赖的函数依赖集,假设集,假设F F中一切函数依赖的左部都包含了中一切函数依赖的左部都包含了R R的任何一个候的任何一个候选键,称选键,称R R是满足是满足Boyce-CoddBoyce-Codd范式,记为范式,记为BCNFBCNF即每一个即每一个决议要素都包含候选键决议要素都包含候选键定理:一个定理:一个BCNFBCNF范式必是范式必是3NF3NF。
证明:反证法设证明:反证法设R R是一个是一个BCNFBCNF但不是但不是3NF3NF那么必存在非主那么必存在非主属性属性A A候选键候选键X X以及属性集以及属性集Y Y,使得,使得X X-->Y,Y>Y,Y-->A,>A,且且 , ,那么那么Y Y不能够包含不能够包含R R的候选键的候选键X X 由于假设由于假设X X包含于包含于Y Y中,根中,根据自反性,可得据自反性,可得Y Y-->X>X但是由于但是由于Y Y在这里是决议要素,根在这里是决议要素,根据定义这里的条件据定义这里的条件R R就不是就不是BCNFBCNF这和假设相矛盾,从而这和假设相矛盾,从而定理得证但是满足定理得证但是满足3NF3NF不一定满足不一定满足BCNFBCNFY XY X练习练习1 1、设有关系方式、设有关系方式R R〔〔X,Y,ZX,Y,Z〕,其上的函数依赖集如下,断定〕,其上的函数依赖集如下,断定R R最高满足第几范式最高满足第几范式解:首先根据函数依解:首先根据函数依赖求候求候选键:: L L类::X X;;LRLR类::Y,ZY,Z;; 且〔且〔XYXY〕〕+=+=〔〔XYZXYZ〕〕 , ,〔〔XZXZ〕〕+=+=〔〔XYZXYZ〕,〕,所以所以R R的候的候选键为XYXY和和XZXZ。
没有非主属性,所以没有非主属性,所以R R满足足3NF3NF,,但但R R不是不是BCNFBCNF,由于决,由于决议要素要素Y Y中不包含候中不包含候选键2 2、判别以下说法能否正确:、判别以下说法能否正确:〔〔1 1〕任何一个包含两个属性的关系方式一定满足〕任何一个包含两个属性的关系方式一定满足3NF3NF〔〔2 2〕任何一个包含两个属性的关系方式一定满足〕任何一个包含两个属性的关系方式一定满足BCNFBCNF〔〔3 3〕任何一个包含三个属性的关系方式一定满足〕任何一个包含三个属性的关系方式一定满足3NF3NF〔〔4 4〕任何一个关系方式一定有键〕任何一个关系方式一定有键解答:解答:设有二元关系设有二元关系R R〔〔X,YX,Y〕,那么〕,那么X X和和Y Y之间的函数依赖能够如下:之间的函数依赖能够如下:1 1〕〕 , , , ,那么关系方式的候选键为那么关系方式的候选键为X X没有第三方没有第三方属性传送函数依赖,所以属性传送函数依赖,所以R R满足满足3NF3NF,而且决议要素包含候,而且决议要素包含候选键,选键,R R满足满足BCNFBCNF。
2 2〕〕 , ,那么关系方式的候选键为那么关系方式的候选键为X X和和Y Y没有第三没有第三方属性传送函数依赖,而且决议要素包含候选键,方属性传送函数依赖,而且决议要素包含候选键,R R满足满足BCNFBCNFY XY X3 3〕〕X X和和Y Y之间不存在函数依赖,那么关系方式的候选键是之间不存在函数依赖,那么关系方式的候选键是XYXY这个时候这个时候R R也是满足也是满足BCNFBCNF,由于此时不存在推翻,由于此时不存在推翻R R不是不是BCNFBCNF的条件包含三个属性的关系方式不一定是的条件包含三个属性的关系方式不一定是3NF3NF,如上面提,如上面提到的到的SDSD关系方式中关系方式中DomDom传送函数依赖于传送函数依赖于SnoSno关系方式一定有键,这是关系方式的固有属性关系方式一定有键,这是关系方式的固有属性所以只需第三种说法不正确所以只需第三种说法不正确假设某商业集团数据库有一关系方式假设某商业集团数据库有一关系方式R R如下:如下: R R〔商店编号,商品编号,数量,部门编号,担任人〕〔商店编号,商品编号,数量,部门编号,担任人〕现规定:现规定:1 1、每个商店的每种商品只在一个部门销售。
每个商店的每种商品只在一个部门销售 2 2、每个商店的每个部门只需一个担任人每个商店的每个部门只需一个担任人 3 3、每个商店的每种商品只需一个库存数量每个商店的每种商品只需一个库存数量回答以下问题:回答以下问题:1 1、写出、写出R R的根本函数依赖的根本函数依赖 2 2、找出关系方式、找出关系方式R R的候选键的候选键 3 3、关系方式、关系方式R R最高到达第几范式?为什么最高到达第几范式?为什么分析关系方式分析关系方式分析:关系分析:关系R R存在的函数依赖有:存在的函数依赖有:利用函数依赖求候选键:利用函数依赖求候选键:L L类属性:商店编号,商品编号;类属性:商店编号,商品编号;LRLR类:类: 部门编号;部门编号;R R类:类: 担任人担任人数量而且〔商店编号,商品编号〕+=数量而且〔商店编号,商品编号〕+=U U,所以关系方式,所以关系方式R R的候选键为〔商店编号,商品编号〕的候选键为〔商店编号,商品编号〕。
判别判别R R属于第几范式:属于第几范式:非主属性为:部门编号,担任人,数量它们对候选键都非主属性为:部门编号,担任人,数量它们对候选键都是完全函数依赖关系,所以是完全函数依赖关系,所以R R是满足第二范式的但是,是满足第二范式的但是,所以非主属性担任人对候选键传送依赖,那么所以非主属性担任人对候选键传送依赖,那么R R不满足第不满足第三范式,因此三范式,因此R R最高满足第二范式最高满足第二范式证明:证明:〔〔1〕〕〔〔2〕〕Ø 函数依赖集的规范覆盖函数依赖集的规范覆盖定义:关系方式定义:关系方式R R〔〔U U〕上的两个〕上的两个FDFD集集F F和和G G,假设满足,假设满足F+=G+F+=G+,,那么称那么称F F和和G G是等价的是等价的定理:定理:F+=G+F+=G+的充沛必要条件是的充沛必要条件是即即F F和和G G等价的条件是等价的条件是Ø 函数依赖集的最小集函数依赖集的最小集如何求出如何求出给定函数依定函数依赖集集F F的最小集:的最小集:1 1、逐一、逐一检查F F中的函数依中的函数依赖,假,假设函数依函数依赖的右部不是的右部不是单个属性,利用分解个属性,利用分解规那么将其分解那么将其分解为多个函数依多个函数依赖,得到新,得到新的函数依的函数依赖集集F’F’2 2、、对于于F’F’中的每个中的每个FD:XFD:X-->A>A,令,令G=F’-{XG=F’-{X-->A}>A},假,假设那么从那么从F’F’中去掉此函数依中去掉此函数依赖,得到,得到F F〞。
〞3 3、、对于于F F〞中的每个〞中的每个FD:XFD:X-->A>A,,设X=B1B2…BmX=B1B2…Bm,,对于于BiBi,假,假设 ,用,用X X--BiBi替代替代X X证明:明:经过以上步以上步骤后所得的函数依后所得的函数依赖集和集和F F等价1 1、分解、分解规那么是那么是ArmstrongArmstrong公理的推公理的推论,所以,所以F’F’与与F F等价2 2、、现要要证明的是当明的是当 ,,G G与与F’F’等价3 3、去掉、去掉F’F’中各函数依中各函数依赖左部的多余属性左部的多余属性检查F’F’中左部非中左部非单属性的函数依属性的函数依赖例如XYXY-->A>A,,现要判要判别Y Y能否能否为多余属多余属性,即能否用性,即能否用X X-->A>A替代替代XYXY-->A>A〔能替代的条件是〔能替代的条件是 〕〕现要要证明的是当替代条件成立明的是当替代条件成立时,替代后所得的,替代后所得的G G和和F F〞等价例例3 3:求:求F F的最小依赖集的最小依赖集1、分解函数依赖右部,这里不需求、分解函数依赖右部,这里不需求2、消除多余的函数依赖、消除多余的函数依赖3、消除函数依赖左部多余属性,这里不需求、消除函数依赖左部多余属性,这里不需求练习:求最小依赖集练习:求最小依赖集1 1、分解各函数的右部为单个属性,得到:、分解各函数的右部为单个属性,得到:2 2、去掉多余的函数依赖、去掉多余的函数依赖2 2、去掉函数依赖左部的多余属性、去掉函数依赖左部的多余属性。












