910 likes | 1.06k Vues
第五章 RDB ( 关系数据库) 5.1 函数依赖 FD 5.2 闭包及其运算 5.3 关系模式分解 5.4 关系模式规范化 NF. 问题 R ( Sh,Sn,Sex,Ch,Grade ) Sh Sn Sex Ch Grade S1 丁一 m c1 90 S1 丁一 m c2 89 S1 丁一 m c3 88 S1 丁一 m c4 87 S1 丁一 m c5 95.
E N D
第五章 RDB (关系数据库) 5.1 函数依赖 FD 5.2 闭包及其运算 5.3 关系模式分解 5.4 关系模式规范化 NF 5 关系数据库
问题 R ( Sh,Sn,Sex,Ch,Grade ) Sh Sn Sex Ch Grade S1 丁一 m c1 90 S1 丁一 m c2 89 S1 丁一 m c3 88 S1 丁一 m c4 87 S1 丁一 m c5 95 PK: ( Sh,Ch ) insert,update,delete 异常,数据冗余 5 关系数据库
解决问题 模式分解 R1 ( Sh,Sn,Sex ) PK:Sh Sh Sn Sex S1 丁一 m R2 ( Sh,Ch,Grade ) PK: (Sh,Ch) Sh Ch Grade S1 c1 90 S1 c2 89 S1 c3 88 S1 c4 87 S1 c5 95 5 关系数据库
问题 • 函数依赖 FD • 函数依赖分类 • 函数依赖特性 5 关系数据库
X——>Y X1 X2 X3 X4 …… Xn Y1 Y2 Y3 …… Yn X决定Y,Y依赖于X 5 关系数据库
R(Sh,Sn,Sex,Ch,Grade) PK: (Sh,Ch) (Sh,Ch) Sn / Sex / Grade Sh Sn / Sex Sn/Sex对(Sh,Ch) Pfd 部分依赖 5 关系数据库
R(Sh,Sn,Sex,Ch,Grade) PK: (Sh,Ch) (Sh,Ch) Sn / Sex / Grade (sh,ch) Grade Grade对(Sh,Ch) Ffd 完全依赖 5 关系数据库
Ex. S (Sh , Bj , Bad) ShBj , BjBad Sh Bad Sh Bj Bad Bad对Sh tfd传递依赖 5 关系数据库
R (U,F) Relation 关系 U Property Set 属性集合 F FD Set 函数依赖集合 Pk: Primary Key 主键 Fk: Foreign Key 外键 5 关系数据库
W ( 日期D ,工号G,姓名N,工种A,定额B,超额C,车间E,车间主任F ) 例 求 PkPrimary Key 主键 完全函数依赖 fFD 部分函数依赖 pFD 传递函数依赖 tFD 5 关系数据库
(D,G) C fFD A B tFD EF W( 日期D ,工号G,姓名N, 工种A,定额B,超额C, 车间E,车间主任F ) FD PK: (D,G) (D,G)N/A/B/C/E/F pFD G N/A/ E 5 关系数据库
f (D,G) C FD W( 日期D ,工号G,姓名N, 工种A,定额B,超额C, 车间E,车间主任F ) PK: (D,G) p N/A/E (D,G) t G N/A/ E B G AB 三类函数依赖FD表示方法 5 关系数据库
1.下表是职工职务工资表R1 职工(E) 职务(F) 职务工资(G) 王 键 车间主任 1200 张 扬 车间主任 1200 王元元 工程师 800 李 民 工程师 800 关系模式R1(E,F,G) 试述: (1)指出 R1的主键 (2)指出是否存在部分函数依赖 (3)指出是否存在传递函数依赖。 (4)R1是否存在数据冗余、更新异常。 5 关系数据库
2. 表为一个某工程关系模式R(A,B,C,D,E,F)试述: (1)指出 R的主键 (2)指出是否存在部分函数依赖 (3)指出是否存在传递函数依赖 (4)R是否存在数据冗余、更新异常。 工程号 材料号 数量 开工日期 完工日期 单价 P1 P1 P1 P2 P2 11 12 13 11 14 4 6 15 6 18 9805 9805 9805 9811 9811 9902 9902 9902 9912 9912 250 200 180 250 150 5 关系数据库
2a. 表为一个某工程关系模式R(A,B,C,D,E,F)试述: (1)R是否满足1NF,为什么? (2)指出 R的主键 (3)指出是否存在部分函数依赖 (4)指出是否存在传递函数依赖 (5)R是否存在数据冗余、更新异常。 *(6)使用什么方法可以进一步提高范式,可达到第几范式 工程号 材料号 数量 开工日期 完工日期 价格 P1 P1 P1 P2 P2 11 12 13 11 14 4 6 15 6 18 9805 9805 9805 9811 9811 9902 9902 9902 9912 9912 250 200 180 250 150 YES AB AB→D A→D B→ F A→ D D→ E A → E YES 5 关系数据库
3.关系模式R(Sh,Ch,Grade,Tname,Taddr),其属性分别 表示学生学号、选修课程的编号、成绩、任课教师姓名、教师地址等意义。如果规定,每个学生每学一门课程只有一个成绩,每门课程只有一个教师任课,每个教师只有一个地址(此处不允许教师同名同姓)。 1)指出 R的主键 3)指出是否存在部分函数依赖 4)指出是否存在传递函数依赖。 5)R是否存在数据冗余、更新异常。 5 关系数据库
3a. 设关系模式R(Sh,Ch,Grade,Tname,Taddr),其属性分别 表示学生学号、选修课程的编号、成绩、任课教师姓名、 教师地址等意义。如果规定,每个学生每学一门课程只有 一个成绩,每门课程只有一个教师任课,每个教师只有一 个地址(此处不允许教师同名同姓)。 1)R是否满足1NF,为什么? 2)指出 R的主键 3)指出是否存在部分函数依赖 4)指出是否存在传递函数依赖 5)R是否存在数据冗余、更新异常。 *6)使用什么方法可以进一步提高范式,可达到第几范式 YES sh,ch shch→ Tn ch→ Tn ch→ Tn Tn→Ta YES 5 关系数据库
4.下表为一个职工关系模式R(A,B,C,D,E)日期A 工号B 超额C 车间D 车间主任E 1101 01 1500 组装 Li 1102 01 1000 组装 Li 1103 01 2000 组装 Li 1101 02 1800 配件 Wu 5 关系数据库
试述:(1) R是否满足1NF,为什么?(2) 指出 R的主键(3) 指出是否存在部分函数依赖(4) 指出是否存在传递函数依赖。(5)R是否存在数据冗余、更新异常。*(6)使用什么方法可以进一步提高范式,可达到第几范式 函数依赖应用举例 5 关系数据库
4a.下表为一个职工关系模式R(A,B,C,D,E)。日期(A)工号(B)超额(C)车间(D)车间主任(E)(1) R是否满足1NF,为什么? (2) 指出 R的主键 (3) 指出是否存在部分函数依赖 (4) 指出是否存在传递函数依赖。 (5)R是否存在数据冗余、更新异常。*(6)使用什么方法可以进一步提高范式,可达到第几范式 Yes PK:AB AB→D B→D pFD AB→E D→E tFD Yes R1(A,B,C) R2(B,D) R3(D,E) 3NF AB→E D→E tFD 5 关系数据库
FD Armstrong R( U ) xy 自反律 xy xzyz 增广律 xy yz xz 传递律 函数依赖特性 5 关系数据库
FD Armstrong R(U) xy xz xyz 合并律 xy xz xyz 分解律 xy ywz xwz 伪传递律 函数依赖特性 5 关系数据库
5.2 闭包X+及其运算 闭包定义 闭包求法 闭包运用 问题 定义:X ? 书86 5 关系数据库
5.2 闭包X+及其运算 R ( U,F ) U={A,B,C,D,E,I} F={AD,ABE,BIE,CDI,EC} ? (AE)+ AD CDI EC AEACDEI AEAE AEAC E D (AE)+=ACDEI 书86 5 关系数据库
R ( U,F ) U={A,B,C,D,E,I} F={AD,ABE,BIE,CDI,EC} ? (AE)+ AEAE (AD, EC) AEACDE (CDI) AEACDEI AE决定的属性集就是 AE的闭包记为(AE)+ (AE)+=ACDEI 书86 5 关系数据库
AE的闭包 ? AE决定的属性集合就是 AE的闭包. 记为: (AE)+ 求闭包就是求它所决定的属性集合 5 关系数据库
R(U,F) U={A,B,C,D,E,P} F={AB,CP,EA,CED} ? (CE)+ , C+, E+ CECE (CP, EA,CED) CEACDEP (AB) CEABCDEP=U CC (CP) CCP EE (EA) EAE (AB) EABE (CE)+=U (C+!=U, E+ !=U) (C,E):CK 左部(only) CK书29 5 关系数据库
侯选关键字 CK [Candidate Key]指 它的值能决定元组值; 它的子集值不能决定元组值. 即它具备主键PK的特性. 主键PK是在侯选关键字 CK中选择. CK书29 5 关系数据库
?求侯选关键字CK方法 F Fmin 1. FD左部(only)属性一定是CK成员 2. FD左,右部属性可能是CK成员 3. 与F中FD无关属性也一定是CK成员 CK书29 5 关系数据库
1. R(U,F) U={C,G,N,S,T} F={CT,CSG, SN} ? Candidate Key 2. U={A,B,C,D,E,G} F={AB,CA,CDE,DG} ? Candidate Key 3. R(U,F) U={A,B,C,D,E} F={AD,ED,DB,BCD,DCA} ? Candidate Key 4. R(U,F) U={A,B,C,D,E} F={ABC,CDE,BD,EA}? Candidate Key CK书29 5 关系数据库
1. R(U,F) U={C,G,N,S,T} F={CT,CSG, SN} ? Candidate Key 左部(only) 是CS CK 是 CS 左部(only) CK书29 5 关系数据库
1. R(U,F) U={C,G,N,S,T} F={CT,CSG, SN} ? Candidate Key (CS)+ CSCS(CSG) (CT) (SN)CSU 即CSCSGTN CS+=U; C+=CT; S+=SN CK: CS 左部(only) CK书29 5 关系数据库
2. R(U,F) U={A,B,C,D,E,G} F={AB,CA,CDE,DG} ? Candidate Key 左部(only) CK书29 5 关系数据库
2. R(U,F) U={A,B,C,D,E,G} F={AB,CA,CDE,DG} ? Candidate Key C+,(CD)+,D+ AA (AB) AAB CC (CA) CCA( AB) CCAB CDCD (CDE)(CA) (DG) CDCDEAG ( AB)CDABCDEG=U DD (DG) DDG CK: CD CD+=U; C+=CAB; D+=DG 左部(only) CK书29 5 关系数据库
3. R(U,F) U={A,B,C,D,E} F={AD ,ED,DB,BCD,DCA} ? Candidate Key 左部(only) 是CE且(CE)+=U CK 是 CE CK书29 左部(only) 5 关系数据库
4. R(U,F) U={A,B,C,D,E} F={ABC,CDE,BD,EA} ? Candidate Key 左部(only) 无. CK 是由左,右部属性组成 左,右部属性 5 关系数据库
4. R(U,F) U={A,B,C,D,E} F={ABC,CDE,BD,EA} ? Candidate Key A+,(CD)+ , B+, E+, (BC)+ BCBC (BD) BCBCD AA (ABC) AABC ( BD) AABCD (CDE) AABCDE=U CDCD (CDE)CDCDE (EA) CDCDEA (ABC) CDABCDE=U BB (BD) BBD EE (EA)EEA (ABC)EEABC (BD) EABCDE=U CK: A, CD, E , BC 左,右部属性 5 关系数据库
?求侯选关键字CK方法 F Fmin 1. FD左部(only)属性一定是CK成员 2. FD左,右部属性可能是CK成员 3. 与F中FD无关属性也一定是CK成员 CK书29 5 关系数据库
最小函数(FD)集合 Fmin 例1、 R(U,F) U={A,B,C,D,E,G} F={ABC,CA,BCD, ACDB,DEG, BE C,CG BD, CE AG}? Fmin 函数依赖应用举例之二 求Min FD集 5 关系数据库
F={ABC,CA,BCD,ACDB,DEG,BE C,CG BD,CE AG} 1.将F中FD右边属性单一化 F1={ ABC,CA,BCD,ACDB, DEG, BE C, CG BD, CE AG } CA A DE,D G, CG B, CG D, CE A, CE G } CE A 2.去掉F1左部的多余属性得F2 CE A ACD少A 5 关系数据库
2.去掉F1左部的多余属性得F2 F2={ABC,CA,BCD, CDB,DE,D G, BE C,CG B, CG D,CE G} CG D CG B 3、去掉F2中多余的FD 设去掉CGD (CG)+= CGBADE = U 故CG D可去掉 设去掉CG B (CG)+= CGDABE=U 故CG->B可去掉 故去掉CGD或CG->B得F3 F3比F2少一项 5 关系数据库
例2、 F={ABC , EP A , D H , AB E ,CDE P ,D G ,ABC G GP B ,HB P ,ABC P,A C } ? Fmin ABC C AB G AB P A C C F1=右部单一化 FD F2: 去掉 ABC AB P AB G ABC P 改为 ABC G 改为 F3:分别假设去掉AB->P和AB->G计算(AB)+ 5 关系数据库
求 Fmin 的方法 1、使F 中每一个FD右部属性单一化 2、去掉各FD左部多余的属性 若有X A 而XY A ,则Y是多余的 若有 X->Y 而XYZ A ,则Y是多余的 3、去掉多余的FD 设去掉X Y,再求X+ 若X+包含Y ,则X Y是多余 5 关系数据库
练习 F={E G , G E, F EG , H EG , FH E} ? Fmin FH E • 右部单一得F1有七项 • 去掉左部多余属性得F2有六项 • 去掉多余FD得F3有四项 Fmin ={E G , G E, F E ,H G} 5 关系数据库
最小FD集 Fmin 应满足的条件: (1)F中每一个FD的右边都是单属性 (2)F中任一FD,X A 其F-{X A}与F不等价 (即缺任何一个FD都与原F不等价) (3)F中任一个FD,X A,Z是X的子集, (F-{X A}) ∪{Z A}与F不等价 即Z X,X A无法用Z A替代 5 关系数据库
练习1F={A BC,B AC,C A} ?Fmin (1) 分解得F={A B,A C,B A, B C,C A}(2)判别每个FD 设G=F-{A B} A+G=AC G=F-{A C} A+G=ABC A C G=F-{B A} B+G =ABC B A G=F-{B C} B+G =B G=F-{C A} C+G =C 5 关系数据库
练习2 F={BE G , BD G,CDE AB, CD A , CE G,BC A, B D , C D } ?Fmin CEA CE B 5 关系数据库
作业 一、求CK? 1,3题U={A,B,C,D,E} 2题U={A,B,C,D,E,G} 1、 F={AD,ED,DB,BCD,DCA} 2、F={AB C ,D EG,C A,BD C } 3、F={E A,CD E,B D,A BC} 二、求Fmin? 1、 F={ABD AC,C BE,AD BF,B E} 2、F={A BC,B C,A B,AB C} 5 关系数据库
5.3 关系模式分解 分解方案选择 方案选择依据 问题 5 关系数据库
例:学生宿舍表 SL ────────────────── Sno Sdept Sloc ────────────────── 95001 CS A 95002 IS B 95003 MA C 95004 IS B 95005 PH B ────────────────── 5 关系数据库