资源描述:
《最新关系模式分解PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关系模式分解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.数据修改复杂。3.插入异常。插入异常是指应该插入到数据库中的数据不能执行插入操作的情形。关系S的主
2、码:(S#,C#)从在S#、C#、和(S#,c#)上出现NULL值去分析。注意:当一个元组在主码的属性上部分或全部为空时,该元组不能插入到关系中。4.1函数依赖函数依赖与属性间的关系有:若X,Y是1—1关系,则存在XY或YX。如学号与借书证号若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
3、#→SNAME(每个学号只能有一个学生姓名)S#→CLASS(每个学号只能有一个班级)C#→TNAME(设每门课程只有一个教师任教,而一个教师可教多门课程,见CT表)TNAME→TAGE(每个教师只能有一个年龄)TNAME→ADDRESS(每个教师只能有一个地址)(S#,C#)→GRADE(每个学生学习一门课只能有一个成绩)(S#,C#)→SNAME、(S#,C#)→CLASS、(S#,C#)→C#、(S#,C#)→TNAME、(S#,C#)→TAGE、(S#,C#)→ADDRESS4.1函数依赖三、函数依赖的分类XY,但Y不包含于X则称X是非平凡
4、的函数依赖。XY,但Y⊆X则称X是平凡的函数依赖。若XY,则X叫做决定因素。若XY,YX,则记作:X<——>Y。定义4.2:在R(U)中,X,Y,Z为U的不同子集。完全函数依赖:是指XY,且对任何X的真子集X’,都有X’+>Y,记作:XF>Y。部分函数依赖:是指XY,且存在X的真子集X’,有X’->Y,记作:XP>Y。定义4.3:在R(U)中传递函数依赖:是指若XY(Y不包含于X),Y+>X,而YZ。记作:XT>Z。4.1函数依赖左部为单属性的函数依赖一定是完全函数依赖。左部为多属性的函数依赖,如何判断其是否为完全函数依赖?方法:取真
5、子集,看其能否决定右部属性。例:试指出学生关系S中存在的完全函数依赖和部分函数依赖。S#→SNAME,S#→CLASS,TNAME→TAGE,TNAME→ADDRESS,C#→TNAME都是完全函数依赖。(S#,C#)→GRADE是一个完全函数依赖,因为S#+>GRADE,C#+>GRADE。4.1函数依赖例:试指出学生关系S中存在的传递函数依赖。解:因为C#→TNAME,TNAME+>C#,TNAME→TAGE,所以C#→TAGE是一个传递函数依赖。类似地,C#→ADDRESS也是一个传递函数依赖。(S#,C#)→SNAME,(S#,C#)→CLA
6、SS,(S#,C#)→TNAME,(S#,C#)→TAGE,(S#,C#)→ADDRESS都是部分函数依赖,因为S#→SNAME,S#→CLASS,C#→TNAME,C#→TAGE,C#→ADDRESS。4.1函数依赖四、候选码用函数依赖的概念来定义码。定义4.4:设X为R中的属性或属性组合,若XF>U则X为R的候选码。说明:XF>UX->UX能决定整个元组X’+>UX中无多余的属性术语:主码主属性:侯选码中的属性非主属性全码:整个属性组为码例:R(顾客,商品,日期)4.1函数依赖例:试指出下列关系R中的侯选码、主属性和非主属性。ADEa1
7、d1e2a2d6e2a3d4e3a4d4e4解:关系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}解:由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->
8、B,A->C,A->D,AB->D}解:由A->A(自反律)和A->B,A->C,A->D(已知)得:A->