设 F = { A B → C , B → D , C D → E , C E → G H , 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 ∣ = A B → G F\;|=AB\rightarrow G F∣=AB→G。
① 已知 B → D B\rightarrow D B→D,则 A B → A D AB\rightarrow AD AB→AD(增广律)
② 已知 A B → A D AB\rightarrow AD AB→AD,则 A B → D AB\rightarrow D AB→D (分解规则)
③ 已知 A B → C AB\rightarrow C AB→C, A B → D AB\rightarrow D AB→D,则 A B → C D AB\rightarrow CD AB→CD (合成规则)
④ 已知 A B → C D AB\rightarrow CD AB→CD, C D → E CD\rightarrow E CD→E,则 A B → E AB\rightarrow E AB→E (传递律)
⑤ 已知 A B → E AB\rightarrow E AB→E, A B → C AB\rightarrow C AB→C,则 A B → C E AB\rightarrow CE AB→CE (合成规则)
⑥ 已知 C E → G H CE\rightarrow GH CE→GH,则 C E → G CE\rightarrow G CE→G (分解规则)
⑦ 已知 A B → C E AB\rightarrow CE AB→CE, C E → G CE\rightarrow G CE→G,则 A B → G AB\rightarrow G AB→G (传递律)
注意区别”传递律“与”传递函数依赖“。
设关系模式 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}, R R R 的一个分解 ρ = { R 1 ( A , B ) , R 2 ( A , C ) , R 3 ( 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)求 F F F 在 ρ \rho ρ 的每个模式上的投影
F F F 在关系模式 R 1 ( A , B ) R_1(A,B) R1(A,B) 上的投影为 { A → B } \{A\rightarrow B\} {A→B}; F F F 在关系模式 R 2 ( A , C ) R_2(A,C) R2(A,C) 上的投影为 { A → C } \{A\rightarrow C\} {A→C}; F F F 在关系模式 R 3 ( A , D ) R_3(A,D) R3(A,D) 上的投影为 { A → D } \{A\rightarrow D\} {A→D}。
(2) ρ \rho ρ 相对于 F F F 是无损连接吗?
A | B | C | D |
a1 | a2 | b13→a3 | b14→a4 |
a1 | b22→a2 | a3 | b24→a4 |
a1 | b32→a2 | b33→a3 | a4 |
其中,红色对应 F F F 中的 A → B A\rightarrow B A→B,蓝色对应 F F F 中的 B → C B\rightarrow C B→C,绿色对应 F F F 中的 A → D A\rightarrow D A→D,此时 F F F 中的 D → C D\rightarrow C D→C 不影响表格。
由于存在某一行全为 a a a,所以 ρ \rho ρ 相对于 F F F 是无损连接。
当分解只包括两个关系模式时,可以使用定理”分解 ρ = { R 1 , R 2 } \rho=\{R_1, R_2\} ρ={R1,R2},若 F ∣ = ( R 1 ∩ R 2 ) → ( R 1 − R 2 ) F|=(R_1\cap R_2)\rightarrow (R_1-R_2) F∣=(R1∩R2)→(R1−R2) 或者 F ∣ = ( R 1 ∩ R 2 ) → ( R 2 − R 1 ) F|=(R_1\cap R_2)\rightarrow (R_2-R_1) F∣=(R1∩R2)→(R2−R1),则 ρ \rho ρ 具有无损连接性“判断是否为无损连接。
(3) ρ \rho ρ 保持函数依赖吗?
A + = A B C D A^+=ABCD A+=ABCD, B + = B C B^+=BC B+=BC, C + = C C^+=C C+=C, D + = C D D^+=CD D+=CD。
考察 A → B A\rightarrow B A→B, A ⊂ R 1 A\subset R_1 A⊂R1, A + ∩ R 1 − A = { B } A^+ \cap R_1-A=\{B\} A+∩R1−A={B}, G = { A → B } G = \{A\rightarrow B\} G={A→B};同理 A ⊂ R 2 A\subset R_2 A⊂R2, G = G ∪ { A → C } G = G\cup \{A\rightarrow C\} G=G∪{A→C}, A ⊂ R 3 A\subset R_3 A⊂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 → C B\rightarrow C B→C, B ⊂ R 1 B\subset R_1 B⊂R1, B + ∩ R 1 − B = ϕ B^+\cap R_1 - B = \phi B+∩R1−B=ϕ, G G G 不变。
考察 A → D A\rightarrow D A→D 类似于 A → B A\rightarrow B A→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}, G G G 不变。
考察 D → C D\rightarrow C D→C, D ⊂ R 3 D\subset R_3 D⊂R3, D + ∩ R 1 − D = ϕ D^+\cap R_1 - D = \phi D+∩R1−D=ϕ, G G G 不变。
最终 G = { A → B , A → C , A → D } G = \{A\rightarrow B,A\rightarrow C,A\rightarrow D\} G={A→B,A→C,A→D}。
显然 G G G 不蕴含 F F F 中的函数依赖 B → C B\rightarrow C B→C 和 D → C D\rightarrow C D→C,所以 ρ \rho ρ 没有保持函数依赖。
1NF、2NF、3NF 和 BCNF 的定义:
1NF:如果一个关系模式 R R R 中的每个属性 A A A 的域值都是原子的,即属性值是不可再分的,则关系模式 R R R 属于第一范式,简记为 R ∈ 1 N F R\in {\rm 1NF} R∈1NF。
2NF:如果 R ∈ 1 N F R∈{\rm 1NF} R∈1NF 且所有的非主属性完全依赖于 R R R 的每个键,则 R ∈ 2 N F R∈{\rm 2NF} R∈2NF。
3NF:如果 R ∈ 1 N F R\in {\rm 1NF} R∈1NF 且在 R R R 中没有非主属性传递依赖于 R R R 的键,则 R ∈ 3 N F R∈\rm 3NF R∈3NF。
BCNF:如果 R ∈ 1 N F R∈\rm 1NF R∈1NF 且 R R R 中没有任何属性传递依赖于 R R R 的任何一个键,则 R ∈ B o y c e − C o d d R∈\rm Boyce-Codd R∈Boyce−Codd 范式(BCNF)。
注意,传递依赖的定义:设关系模式 R R R, X X X、 Y Y Y、 Z Z Z 是 R R R 的属性子集,若函数依赖 X → Y X\rightarrow Y X→Y, Y ↛ X Y\nrightarrow X Y↛X, Y → z Y\rightarrow z Y→z,则有 X → Z X\rightarrow Z X→Z。
指出下列关系模式是第几范式,并说明理由。
(1) R ( A , B , C ) R(A,B,C) R(A,B,C),其函数依赖集为 F = { B → C , A C → B } F=\{B\rightarrow C, AC\rightarrow B\} F={B→C,AC→B}
确定 R R R 的键, A + = A A^+ = A A+=A, B + = B C B^+ = BC B+=BC, C + = C C^+=C C+=C; ( A B ) + = A B C (AB)^+=ABC (AB)+=ABC, ( A C ) + = A B C (AC)^+=ABC (AC)+=ABC,所以键为 A B AB AB 和 A C AC AC。关系模式 R R R 无非主属性,因此 R ∈ 2 N F R\in \rm 2NF R∈2NF, R ∈ 3 N F R\in 3\rm NF R∈3NF。但是由于 A C → B AC\rightarrow B AC→B, B ↛ A C B\nrightarrow AC B↛AC, B → C B\rightarrow C B→C ,存在传递依赖,故 R ∉ B C N F R\notin \rm BCNF R∈/BCNF。
(2) R ( A , B , C ) R(A,B, C) R(A,B,C),其函数依赖集为 F = { A B → C } F=\{AB\rightarrow C\} F={AB→C}
( A B ) + = A B C (AB)^+ = ABC (AB)+=ABC,显然 R R R 的键为 A B AB AB,即 A A A 和 B B B 为主属性, C C C 为非主属性。 A B → C AB\rightarrow C AB→C, C C C 完全依赖于键 A B AB AB, R ∈ 2 N F R\in 2\rm NF R∈2NF。不存在传递依赖, R ∈ 3 N F R\in 3\rm NF R∈3NF, R ∈ B C N F R\in \rm BCNF R∈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}
R R R 的键为 A A A, A A A 为主属性, B B B 和 C C C 为非主属性。 B B B 和 C C C 完全依赖于 A A A, R ∈ 2 N F R\in \rm 2NF R∈2NF。不存在传递依赖,, R ∈ 3 N F R\in 3\rm NF R∈3NF, R ∈ B C N F R\in \rm BCNF R∈BCNF。
(4) R ( A , B , C , D ) R(A,B,C,D) R(A,B,C,D),其函数依赖集为 F = { A → C , A D → B } F=\{A\rightarrow C, AD\rightarrow B\} F={A→C,AD→B}
R R R 的键为 A D AD AD, A A A 和 D D D 为主属性, B B B 和 C C C 为非主属性。 B B B 完全依赖于键 A D AD AD,但是 C C C 部分依赖于键 A D AD AD,所以 R ∉ 2 N F R\notin 2\rm NF R∈/2NF。
(5) R ( A , B , C ) R(A,B,C) R(A,B,C),其函数依赖集为 F = { B → C , B → A , A → B C } F=\{B\rightarrow C, B\rightarrow A, A\rightarrow BC\} F={B→C,B→A,A→BC}
A + = B + = A B C A^+=B^+=ABC A+=B+=ABC,所以键为 A A A 和 B B B, C C C 为非主属性。根据分解规则可知 A → C A\rightarrow C A→C, C C C 完全依赖于 A A A,又 B → C B\rightarrow C B→C, C C C 完全依赖于 B B B,所以 R ∈ 2 N F R\in 2\rm NF R∈2NF。因为 A → B A\rightarrow B A→B, B → A B\rightarrow A B→A,尽管 A → C A\rightarrow C A→C(或 B → C B\rightarrow C B→C),但是不满足传递依赖的定义,所以不存在传递依赖,故 R ∈ 3 N F R\in 3\rm NF R∈3NF, R ∈ B C N F R\in \rm BCNF R∈BCNF。