第 6 章 关系数据理论
6.1 习题 P167
A.1
6.1 名词解释:
范式,函数依赖,部分函数依赖,传递函数依赖,完全函数依赖,多值依赖 答案:
范式:范式是符合某一种级别的关系模式的集合。 函数依赖:设关系R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属件值相等,而在Y上的属性值不等,则称X函数决定Y,或Y函数依赖X.记作X→Y。
部分函数依赖:在R(U)中,如果X→Y,存在X的一个真子集X’,有X’ →Y, 则称Y对X部分函数依赖,记作X
传递函数依赖:在R(U)中,如果X→Y,(Y X) ,YX, Y→Z, 则称Z对X传递函数依赖。
第 25 页
Y 。
记为:X
Z
完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ 全函数依赖,记作:X
Y。
Y, 则称Y对X完
多值依赖: 设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y
的值,这组值仅仅决定于x值而与z值无关。
A.2
6.7
6.7 设关系模式R(ABC),F是R上成立的FD集,
F={C→B, B→A}。
(1) 试说明R不是3NF模式的理由。 答案:
该关系的吗是C,因C→B、 B→A、BC,即A
C;故R不是3NF。
(2) 试把R分解成3NF模式集。 答案:
{R1(AB)、R2(BC)}。
A.3
6.8
6.8 设关系模式R,其中U={A, B, C, D, E,
第 26 页
F} ,函数依赖集F={A→C, C→A, B→AC, D→AC, BD→A}。
(1) 求出BF+。 答案: 解 设X(0)=B; (1) X(1)=B∪AC=ABC。 (2) X(0)≠ X(1) X(2)=X(1)。 (3)算法终止 (B)F+ =ABC。
(2) 求出F的最小函数依赖集。 答案:
C.1
解1:
(1) 根据分解规则把F中的函数依赖转换成右部都是单届性的函数依赖集合,分解后的函数依赖集仍用F表示。F={ A→C,C→A, B→A,B→C,D→A,D→C,BD→A}
(2) 去F中冗余的函数依赖。 ① 判断A→C是否冗余:
设:G1={ C→A, B→A,B→C,D→A,D→C,
?BD→A },得: AG1?A,
第 27 页
而C?A,故A→C不冗余。 ② 判断C→A是否冗余:
设:G2=={ A→C, B→A,B→C,D→A,D→C,
?BD→A},得: CG2?C ,
而A?C,∴故A→C不冗余。 ③ 判断B→A是否冗余:
设:G3=={ A→C,C→A, B→C,D→A,D→C,
?BD→A},得:BG3?ABC,
而A?ABC,∴故B→A冗余。。 ④ 判断B→C是否冗余:
设:G4=={ A→C,C→A,D→A,D→C,
?BD→A},得:BG4?B,
而C?B,∴ B→C不冗余。 ⑤ 判断D→A是否冗余:
设:G5=={ A→C,C→A, B→C,D→C,
?BD→A},得:DG5?ACD,
而A?ACD,∴ D→A冗余。 ⑥ 判断D→C是否冗余:
设:G6=={ A→C,C→A, B→C,BD→A},得:
?DG6?D,
而C?D,∴ D→C不冗余。 ⑦ 判断BD→A是否冗余:
第 28 页