定义
规范化
将一个低一级的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
第一范式
作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。
第二范式
若 R ∈ 1 N F R∈1NF R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则 R ∈ 2 N F R∈2NF R∈2NF。
第三范式
设关系模式 R < U , F > ∈ 1 N F R<U,F>∈1NF R<U,F>∈1NF,若 R R R中不存在这样的码 X X X,属性组 Y Y Y及非主属性 Z ( Z ∉ Y ) Z(Z\notin Y) Z(Z∈/Y),使得 X → Y X→Y X→Y, Y → Z Y→Z Y→Z成立, Y → X Y→X Y→X不成立,则称 R < U , F > ∈ 3 N F R<U,F>∈3NF R<U,F>∈3NF。
每一个非主属性既不传递依赖于码,也不部分依赖于码。
所以,如果
R
∈
3
N
F
R∈3NF
R∈3NF,则必有
R
∈
2
N
F
R∈2NF
R∈2NF。
BCNF范式
关系模式
R
<
U
,
F
>
∈
1
N
F
R<U,F>∈1NF
R<U,F>∈1NF,若
X
→
Y
X→Y
X→Y且
Y
∉
X
Y\notin X
Y∈/X时
X
X
X必含有码,则
R
<
U
,
F
>
∈
B
C
N
F
R<U,F>∈BCNF
R<U,F>∈BCNF。
也就是说,关系模式
R
<
U
,
F
>
R<U,F>
R<U,F>中,若每一个决定因素都包含码,则
R
<
U
,
F
>
∈
B
C
N
F
R<U,F>∈BCNF
R<U,F>∈BCNF。
由BCNF范式的定义可以得到结论,一个满足BCNF的关系模式有:
- 所有非主属性对每一个码都是完全函数依赖。
- 所有主属性对每一个不包含它的码也是完全函数依赖。
- 没有任何属性完全依赖于非码的任何一组属性。
由于 R ∈ B C N F R∈BCNF R∈BCNF,按定义排除了对任何属性对码的传递依赖与部分依赖,所以称 R ∈ 3 N F R∈3NF R∈3NF。
多值依赖
设 R ( U ) R(U) R(U)是属性集 U U U上的一个关系模式。 X X X、 Y Y Y、 Z Z Z是 U U U的子集,并且 Z = U − X − Y Z=U-X-Y Z=U−X−Y。关系模式 R ( U ) R(U) R(U)中多值依赖 X → → Y X→→Y X→→Y成立,当且仅当对 R ( U ) R(U) R(U)的任一关系 r r r,给定一对 ( x , z ) (x,z) (x,z)的值,有一组 Y Y Y的值,这组值仅仅决定于 x x x值而与 z z z值无关。
另一形式化的定义:
在
R
(
U
)
R(U)
R(U)的任一关系
r
r
r中,如果存在元组
t
t
t、
s
s
s使得
t
[
X
]
=
s
[
X
]
t[X]=s[X]
t[X]=s[X],那么交换
t
t
t、
s
s
s元组的
Y
Y
Y值所得的两个新元组必在
r
r
r中,则
Y
Y
Y多值依赖于
X
X
X,记为
X
→
→
Y
X→→Y
X→→Y,这里
X
X
X、
Y
Y
Y是
U
U
U的子集,
Z
=
U
−
X
−
Y
Z=U-X-Y
Z=U−X−Y。
证明
若 R ∈ 3 N F R∈3NF R∈3NF,则 R ∈ 2 N F R∈2NF R∈2NF
另一种证明思路:
若 R ∈ B C N F R∈BCNF R∈BCNF,则 R ∈ 3 N F R∈3NF R∈3NF
任何一个二目关系 R ∈ B C N F R∈BCNF R∈BCNF
证明多值依赖的传递性
假若
X
X
X、
Y
Y
Y、
Z
Z
Z两两不相交,
X
→
→
Y
X→→Y
X→→Y,
Y
→
→
Z
Y→→Z
Y→→Z,则
X
→
→
Z
−
Y
X→→Z-Y
X→→Z−Y