关系数据库设计理论教程文件

上传人:yulij****0329 文档编号:137517000 上传时间:2020-07-08 格式:PPT 页数:87 大小:430.50KB
返回 下载 相关 举报
关系数据库设计理论教程文件_第1页
第1页 / 共87页
关系数据库设计理论教程文件_第2页
第2页 / 共87页
关系数据库设计理论教程文件_第3页
第3页 / 共87页
关系数据库设计理论教程文件_第4页
第4页 / 共87页
关系数据库设计理论教程文件_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《关系数据库设计理论教程文件》由会员分享,可在线阅读,更多相关《关系数据库设计理论教程文件(87页珍藏版)》请在金锄头文库上搜索。

1、第五章 关系数据库设计理论,关系数据库设计理论是关系数据库的指南,也是关系 数据库的理论基础。它是数据库领域的专家和学者们总结 数据库设计中的经验教训的基础上,借助近代数学工具而 提出来的。它把抽象的数学理论和具体的实际问题结合起 来,为数据库领域的发展起到了推动作用。,意义: 提供分析和判断数据库模式好坏的准则; 指导设计好的数据库模式。 地位: 本章是本书最难的部分之一,但对于应用设计十分有用,5.1 问题的提出什么是不好的数据库设计,实际问题,假定在设计数据库时出现如下的关系模式: Student(Sno, Sname, Dept,Cno, Grade) 学生(学号,姓名,院系,课程号,

2、成绩),2、插入(删除)异常 该关系模式的主键应该是由学生学号和课程号共同构 成。按照常理,新学生登记注册,应该在学生信息库里存 在他的资料,但如果此时他还未选课,那么关于这个学生 的信息就不能创建,这是违背现实的情况的。,3、更新复杂 如果某个学生转换所在系,那么和他所有的相关的记录 都必须进行修改。而且,容易造成潜在的数据不一致的问题。 比如李平的记录,可能会只修改了其中一部分元组。,结论: Student关系模式不是一个好的模式。 “好”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不

3、合适 的数据依赖。,由此可见,一个关系模式如果设计的不合理,将会造成很多 问题。如果我们将上述的关系模式进行分解: Student(Sno, Sname,Dept) SC(Sno, Cno, Grade) 分解以后可以解决上述的问题。但是上述关系模式在有些情 况下也不是最优的。具体的关系模式的设计不仅要结合数据 库设计理论,也还要根据实际的应用来决策。,关系模式的形式化定义,关系模式由五部分组成,即它是一个五元组: R(U, D, DOM, F) R: 关系名 U: 组成该关系的属性名集合 D: 属性组U中属性所来自的域 DOM: 属性向域的映象集合 F: 属性间数据的依赖关系集合,什么是数据

4、依赖,1.完整性约束的表现形式 限定属性取值范围:例如学生成绩必须在0-100之间 定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键 2. 数据依赖 是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现,3. 数据依赖的类型 函数依赖(Functional Dependency,简记为FD) 多值依赖(Multivalued Dependency,简记为MVD) 其他,5.2 规范化理论,规范化理论正是用来改造关系模式,通过分解关系模式来消 除其中不合适的数据依赖,以解决插入异常、

5、删除异常、更新异 常和数据冗余问题。,函数依赖,一、属性间的联系 客观世界中的事物是彼此联系,相互制约的。这种联 系分为两类:一类是实体与实体之间的联系;另一类是实 体内部各属性之间的联系。,属性之间的联系分为三类: 1、11:例如果学生关系模式中没有同名现象,则学号和 姓名两个属性之间的关系是一对一的关系。 2、1M:例一个院系有多个人,但是单个人只能属于一个 院系,那么院系和人的学号之间的关系是一对多的。 3、MN:一个课程号对应于多个学号,一个学号对应于多 个课程号,这两个属性之间是多对多的联系。,二、函数依赖的定义 定义:设有关系模式R(U),X和Y是属性集U的子集,r是R 上的任一具

6、体关系,u和v是r中的任意两个元组。如果由 uX=vX能推导出uY=vY,则称X函数决定Y,或Y函 数依赖于X,记为,例:有一个学习模式 R(S#,SNAME,C#,GRADE,TNAME,TAGE) 现在规定,每个学号只对应一个具体学生,每个课程号只 由一个教师来教,写出函数依赖。,三、属性间的联系和函数依赖 属性间的联系有三种,但并不是每一种关系中都存在函数 依赖,设有属性集X、Y属于关系模式R, 如果X和Y之间是11关系,则存在函数依赖:,如果X和Y之间是1M关系,则存在函数依赖:,如果X和Y之间是NM关系,则:,X和Y之间不存在函数依赖,例:如果人名唯一的话,那么一个人名对应一个学号,

7、则有,例:院系和学号之间的联系是一对多的,那么存在的FD为,四、FD的逻辑蕴涵,定义:设F是在关系模式R上成立的函数依赖集, 是一个FD。如果对于R的每个满足F的关系也满足 , 则称F逻辑蕴涵 ,记为 定义:被F逻辑蕴涵的函数依赖的全体构成的集合,称为 函数依赖集的闭包,记为F+。,五、FD的推理规则,从已知的FD集推导未知的FD,可以使用的推导规则 (Armstrong) 设有关系模式R(U),X、Y、Z是U的子集: A1(自反性):如果 ,则有 在R上成立。 A2(增广性):如果 在R上成立,那么有 A3(传递性):如果 在R上成立,则有,证明Armstrong公理,用FD定义:,A1:设

8、u,v是r中的任意两个元组,如果uX=vX,则u,v 中的X的任意子集也必然相等,由条件中uY=vY,根据 函数依赖的定义,可以得到,A2:设u,v是r中的任意两个元组,设uXZ=vXZ,即 uXuZ=vXvZ,则uX=vX,uZ=vZ,由条件 根据函数依赖定义有uY=vY,则uYZ=uYuZ= vYvZ=vYZ这样在uXZ=vXZ的基础上推出了 uYZ=vYZ,得证。,A3:设u,v是r中的任意两个元组,对于uX=vX, 因为 ,则有uY=vY,又因为 则根据定 义可以得出uZ=vZ,因此得到,例题:已知关系R(X,Y,Z)以及其上的函数依赖集F,求F+。,FD的分类:,1、对于FD: ,如

9、果 ,则称为“平凡的FD” 2、对于FD: ,如果 ,则称为“非平凡的FD” 3、对于FD: ,如果 则为“完全非平凡的FD”,Armstrong的推论:,1、合并规则: 2、分解规则: 3、伪传递规则:,合并规则:,分解规则:,伪传递规则:,* 用函数依赖定义键,超键:能唯一标识元组的属性集称为关系模式的超键。 候选键:如果一个属性集能唯一标识元组,且不含有多 余的属性,那么这个属性集成为候选键。 定义:如果关系模式R的属性集为A1,A2,An,F是R上成立 的一个FD集,X是A1,A2,An的一个子集,如果XA1,A2, An在F+中,那么称X是R的一个超键。如果XA1,A2,An 在F+

10、中,且对于X的任何一个真子集X1, X1A1,A2,An 在都不在F+中,则称X是R的一个候选键。,属性集的闭包,定义:设F是属性集U上的FD集,X是U的子集,那么属性集 X的闭包X+,它是一个从F集使用FD推导规则推出的所有满 足XA的属性集A的集合:,定理:XY能用FD推理规则推出的充分必要条件是 证明:(充分性)根据 ,设Y=A1,A2,An。由属性集 闭包定义可知:XAi在F+中。再根据合并规则,XA1, A2,An 即XY。 (必要性)由XY,根据分解规则,XAi,根据属性集闭 包定义可得 ,所以 ,即,*用属性集的闭包来定义候选键,定义:如果关系模式R的属性集为U,F是R上成立的一

11、个 FD集,X是U的一个子集,如果X的属性集的闭包X+ =U,则 称X为R的一个超键,如果对于X的任何一个真子集Y, 有Y+U。则X为R的一个候选键。,算法:求属性集X关于FD集F的闭包X+ 输入:属性集U,U上的FD集F,X是U的子集 输出:X关于F的闭包X 方法: Result:=X; repeat for F 中的每个FD YZ do if then Result:=Result U Z; until (result 没有改变); Result 即为所求的X+,例:属性集U为ABCD,FD集为 , 求A+,AD+ A+ (1) Result=A (2) Result=A U B =AB

12、(3) Result=AB U C =ABC,AD+ = ABCD,例题:,求BD+,1) result=BD, AB不含于result,result=BD 2) result=BD,D包含于result,result =BD U EG=BDEG 3) result=BDEG,C不含于result,result=BDEG 4) result=BDEG,BE包含于result,result =BDEG U C=BCDEG 5) result=BCDEG,BC包含于result,result=BCDEG U D=BCDEG 6) result=BCDEG,CG包含于result,result=BC

13、DEG U BD=BCDEG 7) result=BCDEG,ACD不含于result,result=BCDEG 8) result=BCDEG,CE 含于result,result=BCDEGUAG=ABCDEG,* 快速求解候选键的充分条件,对于给定的关系模式R=(A1,A2,An)和函数依赖集F, 可将其属性分为四类: 1、仅仅出现在F的函数依赖左部的属性L类; 2、仅仅出现在F的函数依赖右部的属性R类; 3、在F的函数依赖的左右两边都没有出现的属性N类; 4、在F的函数依赖的左右两边都出现的属性LR类;,定理:对于给定关系模式R及其函数依赖集F(不包含平凡FD) 1) X是L类属性,则

14、X必为R的任何一个候选键的成员。 2) X是R类属性,则X不包含在任何候选键中。 3) X是R的N类属性,则X也必为R的任何一个候选键的成员。 4) X是R的LR类属性,则X可能是也可能不是候选键的成员。,1) 反证法:设W为R的任一候选键,X不是W的成员。由于 X仅仅出现在F的函数依赖左部,所以R中没有其它属性能 够函数决定X,这样W+中就不可能包含X,这样就与W是R的 候选键相矛盾。所以X必然是候选键W的成员。 (X为L类的情况),2) 反证法:设W是R的任一候选键,X不是W的成员。由于X 没有出现在F中,那么R中没有其它属性能够函数决定X。 这样W+中就不可能包含X,这与W是R的候选键相

15、矛盾。所以 X必然是候选键W的成员。 (X是N类的情况),例:设有关系模式R(A,B,C,D),其函数依赖集F如下, 求R的候选键。,传统步骤:1、分别求A/B/C/D/AB/AC/AD/BC/BD/CD ABC/ABD/ACD/BCD/ABCD的属性集的 闭包。 2、根据候选键定义找出候选键。,快速步骤: 1、L类L类:A,C LR类: B,D (AC)+=ABCD 所以AC是关系模式R的唯一候选键。,求解候选键的步骤 1、根据关系模式上成立的FD集确定属性的类型。 2、根据属性类型求属性集的闭包。 3、满足候选键定义条件的即为所求的候选键。注意有些 情况下候选键不是唯一的。,例:设有关系模

16、式R(A,B,C,D),F是R上成立的FD集,试写 出R的所有候选键。,解答:分析R的属性类型: 求解属性集闭包:,*练习,1、给定关系模式R (ABCDEG),R上成立的FD集,求D+,C+,A+,CD+,AD+,AC+,ACD+ 求出R的所有候选键,解: D(DG) C+=(ABC) A+ =(AB) (AD)+=(ABDG) (AC)+=(ABC) (ACD)+=(ABCDEG) 首先确定关系R的属性类型 L类:C,D ;LR类:A ;R类:B,E,G (CD)+=(ABCDEG),所以R的候选键是CD。,2、设关系模式R(ABCD)上的函数依赖集为F,并且, 求R的所有候选键。 求R的所有不是候选键的超键。, L类:B ;LR类:A,C,D (B)+=(B),(AB)+=(ABCD); (BC)+=(ABCD);(BD)+=(ABCD),所有不是候选键的超键 ABC, ABD, BCD, ABCD,规范化,关系必须是规范化的。通

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号