1
设 F={AB→C,B→D,CD→E,CE→GH,G→A}F=\{AB\rightarrow C,B\rightarrow D, CD\rightarrow E, CE\rightarrow GH, G\rightarrow A \}F={AB→C,B→D,CD→E,CE→GH,G→A},用推理的方法证明 F ∣=AB→GF\;|=AB\rightarrow GF∣=AB→G。
① 已知 B→DB\rightarrow DB→D,则 AB→ADAB\rightarrow ADAB→AD(增广律)
② 已知 AB→ADAB\rightarrow ADAB→AD,则 AB→DAB\rightarrow DAB→D (分解规则)
③ 已知 AB→CAB\rightarrow CAB→C,AB→DAB\rightarrow DAB→D,则 AB→CDAB\rightarrow CDAB→CD (合成规则)
④ 已知 AB→CDAB\rightarrow CDAB→CD,CD→ECD\rightarrow ECD→E,则 AB→EAB\rightarrow EAB→E (传递律)
⑤ 已知 AB→EAB\rightarrow EAB→E,AB→CAB\rightarrow CAB→C,则 AB→CEAB\rightarrow CEAB→CE (合成规则)
⑥ 已知 CE→GHCE\rightarrow GHCE→GH,则 CE→GCE\rightarrow GCE→G (分解规则)
⑦ 已知 AB→CEAB\rightarrow CEAB→CE,CE→GCE\rightarrow GCE→G,则 AB→GAB\rightarrow GAB→G (传递律)
注意区别”传递律“与”传递函数依赖“。
2
设关系模式 R(A,B,C,D)R(A,B,C,D)R(A,B,C,D),其函数依赖集为 F={A→B,B→C,A→D,D→C}F=\{A\rightarrow B, B\rightarrow C, A\rightarrow D, D\rightarrow C\}F={A→B,B→C,A→D,D→C},RRR 的一个分解 ρ={R1(A,B),R2(A,C),R3(A,D)}\rho = \{R_1(A,B), R_2(A,C), R_3(A,D)\}ρ={R1(A,B),R2(A,C),R3(A,D)}。
(1)求 FFF 在 ρ\rhoρ 的每个模式上的投影
FFF 在关系模式 R1(A,B)R_1(A,B)R1(A,B) 上的投影为 {A→B}\{A\rightarrow B\}{A→B};FFF 在关系模式 R2(A,C)R_2(A,C)R2(A,C) 上的投影为 {A→C}\{A\rightarrow C\}{A→C};FFF 在关系模式 R3(A,D)R_3(A,D)R3(A,D) 上的投影为 {A→D}\{A\rightarrow D\}{A→D}。
(2)ρ\rhoρ 相对于 FFF 是无损连接吗?
A | B | C | D |
a1 | a2 | b13→a3 | b14→a4 |
a1 | b22→a2 | a3 | b24→a4 |
a1 | b32→a2 | b33→a3 | a4 |
其中,红色对应 FFF 中的 A→BA\rightarrow BA→B,蓝色对应 FFF 中的 B→CB\rightarrow CB→C,绿色对应 FFF 中的 A→DA\rightarrow DA→D,此时 FFF 中的 D→CD\rightarrow CD→C 不影响表格。
由于存在某一行全为 aaa,所以 ρ\rhoρ 相对于 FFF 是无损连接。
当分解只包括两个关系模式时,可以使用定理”分解 ρ={R1,R2}\rho=\{R_1, R_2\}ρ={R1,R2},若 F∣=(R1∩R2)→(R1−R2)F|=(R_1\cap R_2)\rightarrow (R_1-R_2)F∣=(R1∩R2)→(R1−R2) 或者 F∣=(R1∩R2)→(R2−R1)F|=(R_1\cap R_2)\rightarrow (R_2-R_1)F∣=(R1∩R2)→(R2−R1),则 ρ\rhoρ 具有无损连接性“判断是否为无损连接。
(3)ρ\rhoρ 保持函数依赖吗?
A+=ABCDA^+=ABCDA+=ABCD,B+=BCB^+=BCB+=BC,C+=CC^+=CC+=C,D+=CDD^+=CDD+=CD。
考察 A→BA\rightarrow BA→B,A⊂R1A\subset R_1A⊂R1,A+∩R1−A={B}A^+ \cap R_1-A=\{B\}A+∩R1−A={B},G={A→B}G = \{A\rightarrow B\}G={A→B};同理 A⊂R2A\subset R_2A⊂R2,G=G∪{A→C}G = G\cup \{A\rightarrow C\}G=G∪{A→C},A⊂R3A\subset R_3A⊂R3,G=G∪{A→D}G = G\cup \{A\rightarrow D\}G=G∪{A→D}。G={A→B,A→C,A→D}G = \{A\rightarrow B,A\rightarrow C,A\rightarrow D\}G={A→B,A→C,A→D}。
考察 B→CB\rightarrow CB→C,B⊂R1B\subset R_1B⊂R1,B+∩R1−B=ϕB^+\cap R_1 - B = \phiB+∩R1−B=ϕ,GGG 不变。
考察 A→DA\rightarrow DA→D 类似于 A→BA\rightarrow BA→B,G=G∪{A→B,A→C,A→D}G = G\cup \{A\rightarrow B,A\rightarrow C,A\rightarrow D\}G=G∪{A→B,A→C,A→D},GGG 不变。
考察 D→CD\rightarrow CD→C,D⊂R3D\subset R_3D⊂R3,D+∩R1−D=ϕD^+\cap R_1 - D = \phiD+∩R1−D=ϕ,GGG 不变。
最终 G={A→B,A→C,A→D}G = \{A\rightarrow B,A\rightarrow C,A\rightarrow D\}G={A→B,A→C,A→D}。
显然 GGG 不蕴含 FFF 中的函数依赖 B→CB\rightarrow CB→C 和 D→CD\rightarrow CD→C,所以 ρ\rhoρ 没有保持函数依赖。
3
1NF、2NF、3NF 和 BCNF 的定义:
1NF:如果一个关系模式 RRR 中的每个属性 AAA 的域值都是原子的,即属性值是不可再分的,则关系模式 RRR 属于第一范式,简记为R∈1NFR\in {\rm 1NF}R∈1NF。
2NF:如果 R∈1NFR∈{\rm 1NF}R∈1NF 且所有的非主属性完全依赖于 RRR 的每个键,则 R∈2NFR∈{\rm 2NF}R∈2NF。
3NF:如果 R∈1NFR\in {\rm 1NF}R∈1NF 且在 RRR 中没有非主属性传递依赖于 RRR 的键,则 R∈3NFR∈\rm 3NFR∈3NF。
BCNF:如果 R∈1NFR∈\rm 1NFR∈1NF 且 RRR 中没有任何属性传递依赖于 RRR 的任何一个键,则 R∈Boyce−CoddR∈\rm Boyce-CoddR∈Boyce−Codd 范式(BCNF)。
注意,传递依赖的定义:设关系模式 RRR,XXX、YYY、ZZZ 是 RRR 的属性子集,若函数依赖 X→YX\rightarrow YX→Y,Y↛XY\nrightarrow XY↛X,Y→zY\rightarrow zY→z,则有 X→ZX\rightarrow ZX→Z。
指出下列关系模式是第几范式,并说明理由。
(1)R(A,B,C)R(A,B,C)R(A,B,C),其函数依赖集为 F={B→C,AC→B}F=\{B\rightarrow C, AC\rightarrow B\}F={B→C,AC→B}
确定 RRR 的键,A+=AA^+ = AA+=A,B+=BCB^+ = BCB+=BC,C+=CC^+=CC+=C;(AB)+=ABC(AB)^+=ABC(AB)+=ABC,(AC)+=ABC(AC)^+=ABC(AC)+=ABC,所以键为 ABABAB 和 ACACAC。关系模式 RRR 无非主属性,因此 R∈2NFR\in \rm 2NFR∈2NF,R∈3NFR\in 3\rm NFR∈3NF。但是由于 AC→BAC\rightarrow BAC→B,B↛ACB\nrightarrow ACB↛AC,B→CB\rightarrow CB→C ,存在传递依赖,故 R∉BCNFR\notin \rm BCNFR∈/BCNF。
(2)R(A,B,C)R(A,B, C)R(A,B,C),其函数依赖集为 F={AB→C}F=\{AB\rightarrow C\}F={AB→C}
(AB)+=ABC(AB)^+ = ABC(AB)+=ABC,显然 RRR 的键为 ABABAB,即 AAA 和 BBB 为主属性,CCC 为非主属性。AB→CAB\rightarrow CAB→C,CCC 完全依赖于键 ABABAB,R∈2NFR\in 2\rm NFR∈2NF。不存在传递依赖,R∈3NFR\in 3\rm NFR∈3NF,R∈BCNFR\in \rm BCNFR∈BCNF。
(3)R(A,B,C)R(A,B,C)R(A,B,C),其函数依赖集为 F={A→B,A→C}F=\{A\rightarrow B, A\rightarrow C\}F={A→B,A→C}
RRR 的键为 AAA,AAA 为主属性,BBB 和 CCC 为非主属性。BBB 和 CCC 完全依赖于 AAA,R∈2NFR\in \rm 2NFR∈2NF。不存在传递依赖,,R∈3NFR\in 3\rm NFR∈3NF,R∈BCNFR\in \rm BCNFR∈BCNF。
(4)R(A,B,C,D)R(A,B,C,D)R(A,B,C,D),其函数依赖集为 F={A→C,AD→B}F=\{A\rightarrow C, AD\rightarrow B\}F={A→C,AD→B}
RRR 的键为 ADADAD,AAA 和 DDD 为主属性,BBB 和 CCC 为非主属性。BBB 完全依赖于键 ADADAD,但是 CCC 部分依赖于键 ADADAD,所以 R∉2NFR\notin 2\rm NFR∈/2NF。
(5)R(A,B,C)R(A,B,C)R(A,B,C),其函数依赖集为 F={B→C,B→A,A→BC}F=\{B\rightarrow C, B\rightarrow A, A\rightarrow BC\}F={B→C,B→A,A→BC}
A+=B+=ABCA^+=B^+=ABCA+=B+=ABC,所以键为 AAA 和 BBB,CCC 为非主属性。根据分解规则可知 A→CA\rightarrow CA→C,CCC 完全依赖于 AAA,又 B→CB\rightarrow CB→C,CCC 完全依赖于 BBB,所以 R∈2NFR\in 2\rm NFR∈2NF。因为 A→BA\rightarrow BA→B,B→AB\rightarrow AB→A,尽管 A→CA\rightarrow CA→C(或 B→CB\rightarrow CB→C),但是不满足传递依赖的定义,所以不存在传递依赖,故 R∈3NFR\in 3\rm NFR∈3NF,R∈BCNFR\in \rm BCNFR∈BCNF。