因为上课的时候
一直在摸鱼没有听懂,所以复习的时候理解一下数据库中关于范式的相关知识点。涉及范式的定义,以及给定一个函数依赖集判断是那种范式的方法。
范式
迄今为止一共提出了 6 6 6 种范式,他们的关系是 5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5\rm{NF}\subset 4NF\subset BCNF\subset3NF\subset2NF\subset1NF 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF,在这里我们只讨论后 4 4 4 个范式(不讨论 4 N F 4\rm NF 4NF 和 5 N F 5\rm NF 5NF)。
第一范式(1NF)
这是关系型数据库最基本的要求。只要是关系型数据库中的关系(即没有“表中有表”等问题),那么它就是 1 N F \rm1NF 1NF。
第二范式(2NF)
定义:若 R ∈ 1 N F R\in1\rm NF R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则 R ∈ 2 N F R\in\rm2NF R∈2NF。(定义太绕,建议看解读。)
非主属性:一个关系可能有很多候选码,在候选码里面的都是主属性;不在候选码里面的就是非主属性。比如关系 R ( A , B , C , D , E , F ) R(A,B,C,D,E,F) R(A,B,C,D,E,F) 有 3 3 3 个候选码 A B C \mathit{ABC} ABC, C E \mathit{CE} CE 和 D D D,那么主属性就是 A B C D E \mathit{ABCDE} ABCDE,非主属性就是 F F F。
解读:只要不存在非主属性对码的部分依赖,就属于第二范式。
举一个不是第二范式的例子,关系
R
(
A
,
B
,
C
,
D
)
R(A,B,C,D)
R(A,B,C,D) 里面,已知它的码是
A
B
\mathit{AB}
AB,并且有函数依赖
B
→
D
B\rightarrow D
B→D。由于不需要知道
A
B
AB
AB,只需要知道其一部分
B
B
B 就可以得出非主属性
D
D
D,因此
R
R
R 不是第二范式。
第三范式(3NF)
定义:设关系模式 R < U , F > ∈ 1 N F R<U,F>\in 1\rm NF R<U,F>∈1NF,若 R R R 中不存在这样的码 X X X,属性组 Y Y Y 及非主属性 Z ( Z ⊉ Y ) Z(Z\nsupseteq Y) Z(Z⊉Y) 使得 X → Y X\rightarrow Y X→Y, Y → Z Y\rightarrow Z Y→Z 成立, Y ↛ X Y\nrightarrow X Y↛X,则称 R ∈ 3 N F R\in3\rm NF R∈3NF。
这里强调 Y ↛ X Y\nrightarrow X Y↛X 是为了 Z Z Z 对 X X X 的传递依赖成立。如果 Y → X Y\rightarrow X Y→X,那么 Z Z Z 对 X X X 就是直接函数依赖。
解读:只要不存在非主属性对码的部分和传递依赖,就属于第三范式。实际上,只要消除了传递依赖,也就顺便消除了部分依赖,所以判定是不是
3
N
F
3\rm NF
3NF 时只需看是否存在传递依赖就好了。
举一个不是第三范式的例子,关系
R
(
A
,
B
,
C
)
R(A,B,C)
R(A,B,C) 中,已知它的码是
A
A
A,存在函数依赖
F
=
{
A
→
B
,
B
→
C
,
A
→
C
}
F=\{A\rightarrow B,B\rightarrow C,A\rightarrow C\}
F={A→B,B→C,A→C}。既然
A
A
A 能够决定
B
B
B,然后
B
B
B 又决定
C
C
C,那么就有
A
→
传递
C
A\xrightarrow{传递}C
A传递C,所以不是第三范式。
注意这个例子中, C C C 不是主属性。
BC范式(BCNF)
定义:设关系模式
R
<
U
,
F
>
∈
1
N
F
R<U,F>\in1\rm NF
R<U,F>∈1NF,若
R
R
R 中不存在这样的码
X
X
X,若
X
→
Y
X\rightarrow Y
X→Y 且
Y
⊈
X
Y\nsubseteq X
Y⊈X 时
X
X
X 必含有码,则
R
∈
B
C
N
F
R\in\rm BCNF
R∈BCNF。
解读:只要所有函数依赖的决定因素都含有码,那么就是BC范式。
举一个不是BC范式的例子,关系
R
(
S
,
T
,
J
)
R(S,T,J)
R(S,T,J) 里面的候选码有
(
S
,
J
)
(S,J)
(S,J) 和
(
S
,
T
)
(S,T)
(S,T),并且存在函数依赖
F
=
{
(
S
,
J
)
→
T
,
(
S
,
T
)
→
J
,
T
→
J
}
F=\{(S,J)\rightarrow T,(S,T)\rightarrow J,T\rightarrow J\}
F={(S,J)→T,(S,T)→J,T→J}。这个关系的决定因素
{
(
S
,
J
)
,
(
S
,
T
)
,
T
}
\{(S,J),(S,T),T\}
{(S,J),(S,T),T} 里面,
T
T
T 是不含码的(虽然是候选码的一部分,但是没有完整包含候选码),所以它不是BC范式。
各种范式之间的关系总结如下:
练习
1
1
1.指出下列关系模式最高是第几范式(不考虑
4
N
F
,
5
N
F
\rm4NF,5NF
4NF,5NF)?
(
1
)
(1)
(1)
R
(
X
,
Y
,
Z
)
,
F
=
{
X
Y
→
Z
}
R(X,Y,Z),F=\{\mathit{XY}→Z\}
R(X,Y,Z),F={XY→Z},侯选码
X
Y
\mathit{XY}
XY。
(
2
)
(2)
(2)
R
(
X
,
Y
,
Z
)
,
F
=
{
Y
→
Z
,
X
Z
→
Y
}
R(X,Y,Z),F=\{Y→Z, \mathit{XZ}→Y\}
R(X,Y,Z),F={Y→Z,XZ→Y},侯选码
X
Y
\mathit{XY}
XY 与
X
Z
\mathit{XZ}
XZ。
(
3
)
(3)
(3)
R
(
X
,
Y
,
Z
)
,
F
=
{
X
→
Y
,
X
→
Z
}
R(X,Y,Z),F=\{X→Y, X →Z\}
R(X,Y,Z),F={X→Y,X→Z},侯选码
X
X
X。
(
4
)
(4)
(4)
R
(
W
,
X
,
Y
,
Z
)
F
=
{
X
→
Z
,
W
X
→
Y
}
R(W,X,Y,Z) F=\{X→Z, \mathit{WX}→Y\}
R(W,X,Y,Z)F={X→Z,WX→Y},候选码
W
X
\mathit{WX}
WX。
答案
(
1
)
(1)
(1) 所有函数依赖的决定因素
{
X
Y
}
\{{XY}\}
{XY} 都含有码
X
Y
\mathit{XY}
XY,因此最高是
B
C
N
F
\rm BCNF
BCNF。
(
2
)
(2)
(2) 没有非主属性,因此至少是
3
N
F
\rm 3NF
3NF。由于存在一个决定因素
Y
Y
Y 不含码,因而不是
B
C
N
F
\rm BCNF
BCNF,所以最高是
3
N
F
\rm3NF
3NF。
TIPS: 2 N F \rm2NF 2NF 和 3 N F \rm3NF 3NF 都是对非主属性作出要求,如果一个关系本身就没有非主属性,那么这些要求自然就是满足的,因此该关系至少是 3 N F \rm 3NF 3NF。
(
3
)
(3)
(3) 同
(
1
)
(1)
(1),决定因素
{
X
}
\{X\}
{X} 都含有码
X
X
X,因而最高是
B
C
N
F
\rm BCNF
BCNF。
(
4
)
(4)
(4)
Z
Z
Z 是非主属性,
Z
Z
Z 依赖于
X
X
X,然而
X
X
X 是候选码
W
X
\mathit{WX}
WX 的子集。因此存在非主属性对码的部分函数依赖,不是
2
N
F
\rm 2NF
2NF,因此最高是
1
N
F
1\rm NF
1NF。
2
2
2.考虑关系模式
R
(
A
,
B
,
C
,
D
)
R(A,B,C,D)
R(A,B,C,D),写出满足下列函数依赖时
R
R
R 的码,并给出
R
R
R 最高属于哪种范式?(
1
N
F
,
2
N
F
,
3
N
F
\rm1NF,2NF,3NF
1NF,2NF,3NF 或
B
C
N
F
\rm BCNF
BCNF)
(
1
)
(1)
(1)
B
→
D
,
A
B
→
C
\mathit{B→D,AB→C}
B→D,AB→C
(
2
)
(2)
(2)
A
→
B
,
A
→
C
,
D
→
A
A →B,A →C, D →A
A→B,A→C,D→A
(
3
)
(3)
(3)
B
C
D
→
A
,
A
→
C
\mathit{BCD}→A, A →C
BCD→A,A→C
(
4
)
(4)
(4)
B
→
C
,
B
→
D
,
C
D
→
A
B→C, B→D,\mathit{CD}→A
B→C,B→D,CD→A
(
5
)
(5)
(5)
A
B
D
→
C
\mathit{ABD}→C
ABD→C
答案
题号 | 码 | 最高属于哪个范式 |
---|---|---|
( 1 ) (1) (1) | A B \mathit{AB} AB | 1 N F \rm1NF 1NF |
( 2 ) (2) (2) | D {D} D | 2 N F \rm2NF 2NF |
( 3 ) (3) (3) | B C D , A B D \mathit{BCD,ABD} BCD,ABD | 3 N F \rm 3NF 3NF |
( 4 ) (4) (4) | B B B | 2 N F \rm 2NF 2NF |
( 5 ) (5) (5) | A B D \mathit{ABD} ABD | B C N F \rm BCNF BCNF |