关系模式分解课件

上传人:我*** 文档编号:147896499 上传时间:2020-10-14 格式:PPT 页数:99 大小:1.20MB
返回 下载 相关 举报
关系模式分解课件_第1页
第1页 / 共99页
关系模式分解课件_第2页
第2页 / 共99页
关系模式分解课件_第3页
第3页 / 共99页
关系模式分解课件_第4页
第4页 / 共99页
关系模式分解课件_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《关系模式分解课件》由会员分享,可在线阅读,更多相关《关系模式分解课件(99页珍藏版)》请在金锄头文库上搜索。

1、4.1 关系模式的设计问题,4.2 关系模式的规范化,4.3 数据依赖的公理系统,4.4 关系模式的分解,第四章 关系数据理论,本章小结,4.1函数依赖,一、问题如何构造一个关系模式 例:假设有学生关系模式,其中,S#学号、 SNAME学生姓名、 CLASS班级、 C#课程号、 TNAME教师姓名、 TAGE教师年龄、ADDRESS教师地址、 GRADE成绩。,S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE),关系S存在以下问题: 1数据冗余度高。 SNAME、CLASS、TNAME、TAGE、ADDRESS重复存储多次。,4.1函数依赖,2数据修改复

2、杂。 3插入异常。 插入异常是指应该插入到数据库中的数据不能执行插入操作的情形。,关系S的主码:,(S#,C#),从在S#、C#、和(S#,c#)上出现NULL值去分析。 注意:当一个元组在主码的属性上部分或全部为空时,该元组不能插入到关系中。,4.1函数依赖,4删除异常。 删除异常是指不应该删去的数据被删去的情形。 例如:选修某门课的所有学生都退选时,删除相关元组,会丢失该课程老师的信息。 解决:关系模式分解(关系规范化) 分解为 ST(S#,SNAME,CLASS) CT(C#,TNAME) TA(TNAME,TAGE,ADDRESS) SC(S#,C#,GRADE),4.1函数依赖,二、

3、函数依赖functional dependency, abbr. FD,设:R(A1,A2,An)=R( U ) X,Y,Z 为U的不同子集,定义4.1: 函数依赖 是完整性约束的一种,它推广了关键词的概念。If t1.X=t2.X, then t1.Y=t2.Y 函数依赖:若R的任意关系有:对X中的每个属性值,在Y中都有惟一的值与之对应,则称Y函数依赖于X,记作 XY 。,属性全集,4.1函数依赖,例:指出下列关系R中的函数依赖。,FD: AB-C、 AC、CA、ABD? Insert into R values(a1, b1, c2, d1) FD = key constraint ?,4

4、.1函数依赖,函数依赖与属性间的关系有: 若X,Y是1 1关系, 则存在 XY或Y X 。如学号与借书证号 若X,Y是m 1关系, 则存在 XY但 Y+ X。如学号与姓名 若X,Y是m n关系, 则X,Y间不存在函数依赖关系。如姓名与课程 CF: 实体间的联系 NOTE: 函数依赖的方向性,4.1函数依赖,例 试指出学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE)中存在的函数依赖关系。 S#SNAME(每个学号只能有一个学生姓名) S#CLASS(每个学号只能有一个班级) C#TNAME(设每门课程只有一个教师任教,而一个教师可教多门课程,见C

5、T表) TNAMETAGE(每个教师只能有一个年龄) TNAMEADDRESS(每个教师只能有一个地址) (S#,C#)GRADE(每个学生学习一门课只能有一个成绩) (S#,C#)SNAME、 (S#,C#)CLASS、 (S#,C#)C#、 (S#,C#)TNAME、 (S#,C#)TAGE、 (S#,C#)ADDRESS,4.1函数依赖,三、函数依赖的分类 XY,但Y 不包含于 X则称X是非平凡的函数依赖。 XY,但Y X 则称X是平凡的函数依赖。 若XY ,则X叫做决定因素。 若XY,Y X,则记作: XY。 定义4.2:在R( U)中,X, Y, Z为U的不同子集。 完全函数依赖:

6、是指 XY,且对任何X的真子集X, 都有X+Y,记作:X F Y。 部分函数依赖: 是指XY,且存在X的真子集X, 有X-Y, 记作:X P Y。,定义4.3:在R( U )中 传递函数依赖:是指若XY (Y 不包含于 X), Y + X , 而Y Z。记作: X T Z 。,4.1函数依赖,左部为单属性的函数依赖一定是完全函数依赖。 左部为多属性的函数依赖,如何判断其是否为完全函数依赖? 方法:取真子集,看其能否决定右部属性。 例:试指出学生关系S中存在的完全函数依赖和部分函数依赖。 S#SNAME,S#CLASS,TNAMETAGE, TNAMEADDRESS,C#TNAME都是完全函数依

7、赖。 (S#,C#)GRADE 是一个完全函数依赖,因为S#+GRADE,C#+GRADE。,4.1函数依赖,例:试指出学生关系S中存在的传递函数依赖。 解:因为C#TNAME,TNAME+C#,TNAMETAGE,所以C#TAGE 是一个传递函数依赖。类似地,C#ADDRESS也是一个传递函数依赖。,(S#,C#)SNAME,(S#,C#)CLASS, (S#,C#)TNAME,(S#,C#)TAGE, (S#,C#)ADDRESS都是部分函数依赖,因为S#SNAME,S#CLASS,C#TNAME,C#TAGE,C#ADDRESS。,4.1函数依赖,四、候选码 用函数依赖的概念来定义码。

8、定义4.4 : 设X为R中的属性或属性组合,若 X F U 则X为R的候选码。 说明: X F U X - U X能决定整个元组 X+ U X中无多余的属性,术语: 主码 主属性: 侯选码中的属性 非主属性 全码:整个属性组为码 例:R(顾客,商品,日期),4.1函数依赖,例:试指出下列关系R中的侯选码、主属性和非主属性。,解:关系R的侯选码为:A,(D,E) 关系R的主属性为:A,D,E 关系R的非主属性:无,函数依赖判断:A-D? D-A? AD-E? 候选码判断: A-ADE? AD-ADE?,4.1函数依赖,例1. R(A, B, C, D),F=A-B, A-C, AB-D 解:由

9、AB-A(自反律) 和 A-C(已知) 得:AB-C(传递律) 又因为 AB-A (自反律) ,AB-B (自反律) 和 AB-D (已知) 得:AB-ABCD。 AB是R的唯一候选码,同时也是R的主码。,4.1函数依赖,例2. R(A, B, C, D),F=A-B, A-C, A-D, AB-D 解:由 A-A(自反律) 和 A-B, A-C, A-D(已知) 得:A- ABCD 可知 A是R的候选码 AB-ABCD,但由于存在A- ABCD,则AB对ABCD是部分函数依赖,因此AB不能成为候选码。 A是R的唯一候选码,A是主码。,4.2 关系模式的规范化,一、关系与范式 关系的规范化是将

10、一个低级范式的关系模式,通过关系模式的分解转换为若干个高级范式的过程。 关系模式分解的目的:去冗余、满足约束。 关系模式的冗余性问题。例R(A,B,C),无任何约束可导致冗余,若规定FD:A-B,则冗余可利用FD预测到。 约束条件通过函数的多值依赖和连接依赖及范式完成。,4.2 关系模式的规范化,二、第一范式:1NF 定义4.5: 若R的每个分量都是不可分的数据项,则R1NF。 从型上看:不存在嵌套结构 从值上看,不存在重复组 1NF是关系模式的最低要求。 例:学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE)是1NF关系,但它存在数据冗余,插入

11、异常和删除异常等问题。,4.2 关系模式的规范化,三、第二范式: 2NF 定义4.6 若R1NF,且R中的每一个非主属性都完全函数依赖于R的任一候选码,则R2NF。 例:学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE),判断R是否为2NF? 侯选码为(S#,C#),非主属性有:SNAME,CLASS,TNAME,TAGE,ADDRESS,GRADE (S#,C#)SNAME, S# SNAME (S#,C#) P SNAME S2NF(每一个非主属性!)。,4.2 关系模式的规范化,分解为2NF的方法:破坏部分依赖的条件。 将满足部分函数依赖和

12、满足完全函数依赖的属性分解到不同的关系中。 对上例,考察非主属性和侯选码之间的函数依赖关系: (S#,C#) P SNAME, (S#,C#) P CLASS, (S#,C#) P TNAME, (S#,C#) P TAGE, (S#,C#) P ADDRESS, (S#,C#) F GRADE 区分出完全依赖和部分依赖,若是部分依赖,标记出其中的主属性。,4.2 关系模式的规范化,关系S分解为三个关系: ST(S#,SNAME,CLASS)(只依赖S#的属性分解到一个子模式中) CTA(C#,TNAME,TAGE,ADDRESS) (只依赖C#的属性分解到另一个子模式中) SC(S#,C#,

13、GRADE) (完全函数依赖于候选码的属性分解到第三个子模式中) 分解后,关系ST、CTA和SC都为2NF。 结论1:若关系R的侯选码是单属性的,则R必定是2NF。,4.2 关系模式的规范化,达到2NF的关系仍然可能存在问题。 例如,在关系CTA中还存在以下问题: (1) 数据冗余。一个教师承担多门课程时,教师的姓名、年龄、地址要重复存储。 (2) 修改复杂。一个教师更换地址时,必须修改相关的多个元组。 (3) 插入异常。一个新教师报到,需将其有关数据插入到CTA关系中,但该教师暂时还未承担任何教学任务,则因缺码C#值而不能进行插入操作。 (4) 删除异常。删除某门课程时,会丢失该课程任课教师

14、的姓名、年龄和地址信息。,4.2 关系模式的规范化,四、第三范式: 3NF 定义4.7 如果关系R的任意一个非主属性都不传递函数依赖于它的任意一个候选码,则R3NF。 关系CTA(C#,TNAME,TAGE,ADDRESS)是2NF,但不是3NF。 候选码:C#,非主属性:TNAME、TAGE、ADDRESS。 由于C#TNAME,TNAME+C#,TNAMETAGE,所以 C# T TAGE ,同样有C# T ADDRESS,即存在非主属性对候选码的传递函数依赖。,关系模式R(A,B,C,D),码为AB,给出它的 一个函数依赖集,使得R属于2NF而不属于3NF,4.2 关系模式的规范化,分解

15、为3NF的方法:破坏传递依赖的条件。 将涉及传递函数依赖中的两个依赖中的属性分解到不同的关系中。 例:CTA中,两个传递依赖C# T TAGE ,C# T ADDRESS C#TNAME,TNAME+C#,TNAMETAGE。 C#TNAME,TNAME+C#,TNAMEADDRESS。 将CTA分解为: CT(C#,TNAME) TA(TNAME,TAGE,ADDRESS) 则关系CT和TA都是3NF,关系CTA中存在的问题得到了解决。,4.2 关系模式的规范化,定理4.1 一个3NF的关系必定是 2NF。 (3NF传递函数依赖,2NF完全函数依赖。) 证明:用反证法。设R3NF,但R2NF

16、,则R中必有非 主属性A、侯选码X和X的真子集X存在,使得XA。 X是侯选码X的真子集,有X-X;A是非主属性,A-X,A-X,这样A、X、X是U的不同子集。 X是侯选码X的真子集,则有XX 且 X+X,联合反证假设XA可知存在传递依赖(XX,X+X,XA) R不是3NF,与题设矛盾。,4.2 关系模式的规范化,通过转为2NF消除了部分依赖,通过转为3NF消除了传递依赖,问题:达到3NF的关系是否仍然存在问题? 例:每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称 :,4.2 关系模式的规范化,解:关系SCT的侯选码:(S#,CNAME)和(S#,TNAME) 非主属性:无 (SCT至少是一个3NF关系) 结论2:若关系R的所有属性都是主属性,则R必定是3NF。,候选码判断: S#-S# CNAME TNAME. 取左部的相同值,判断右部。,4.2 关系模式的规范化,在3NF关系SCT中存在: 插入异常。例如,一个新课

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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