数据库系统概论之规范化
1.问题的提出
\quad
一个关系模式系模式由五部分组成,是一个五元组:
R
(
U
,
D
,
D
O
M
,
F
)
R(U, D, DOM, F)
R(U,D,DOM,F)
关系名
R
R
R是符号化的元组语义,
U
U
U为一组属性,
D
D
D为属性组
U
U
U中的属性所来自的域,
D
O
M
DOM
DOM为属性到域的映射,
F
F
F为属性组
U
U
U上的一组数据依赖。
由于
D
D
D、
D
O
M
DOM
DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:
R
<
U
,
F
>
R<U,F>
R<U,F>
\quad
未经过规范化的关系模式,可能会造成的问题:
(1)数据冗余,浪费大量的存储空间。
(2)更新异常,数据冗余 ,更新数据时,维护数据完整性代价大。
(3)插入异常。
(4)删除异常。
2.相关定义
(1)数据依赖
\quad
分为函数依赖和多值依赖(这里仅考虑函数依赖)①是一个关系内部属性与属性之间的一种约束关系,通过属性间值的相等与否体现出来的数据间相互联系。②是现实世界属性间相互联系的抽象。③是数据内在的性质。④是语义的体现。
(2)函数依赖
\quad
设
R
(
U
)
R(U)
R(U)是一个属性集
U
U
U上的关系模式,
X
X
X和
Y
Y
Y是
U
U
U的子集。
若对于
R
(
U
)
R(U)
R(U)的任意一个可能的关系
r
r
r,
r
r
r 中不可能存在两个元组在
X
X
X上的属性值相等, 而在
Y
Y
Y上的属性值不等,
则称“
X
X
X函数确定
Y
Y
Y”或“
Y
Y
Y函数依赖于
X
X
X”,记作
X
→
Y
X→Y
X→Y
- X → Y X→Y X→Y,但 Y ⊈ X Y⊈X Y⊈X则称 X → Y X→Y X→Y是非平凡的函数依赖。
- X → Y X→Y X→Y,但 Y ⊆ X Y⊆X Y⊆X 则称 X → Y X→Y X→Y是平凡的函数依赖。
\quad 注:对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明, 我们总是讨论非平凡函数依赖。
- 若 X → Y X→Y X→Y,则 X X X称为这个函数依赖的决定因素。
- 若 X → Y X→Y X→Y, Y → X Y→X Y→X,则记作 X ← → Y X←→Y X←→Y。
- 若 Y Y Y不函数依赖于 X X X,则记作 X ↛ Y X↛Y X↛Y。
(3)完全函数依赖
\quad
在
R
(
U
)
R(U)
R(U)中,如果
X
→
Y
X→Y
X→Y,并且对于
X
X
X的任何一个真子集
X
′
X'
X′, 都有
X
′
↛
Y
X' ↛ Y
X′↛Y, 则称
Y
Y
Y对
X
X
X完全函数依赖,记作
X
⟶
F
Y
X\stackrel{F}{\longrightarrow}Y
X⟶FY
(4)部分函数依赖
\quad
若
X
→
Y
X→Y
X→Y,但
Y
Y
Y不完全函数依赖于
X
X
X,则称
Y
Y
Y对
X
X
X部分函数依赖,记作
X
⟶
P
Y
X\stackrel{P}{\longrightarrow}Y
X⟶PY
(5)候选码
\quad
设
K
K
K为
R
<
U
,
F
>
R<U,F>
R<U,F>中的属性或属性组合。若
K
⟶
F
U
K\stackrel{F}{\longrightarrow}U
K⟶FU,则
K
K
K称为
R
R
R的一个候选码。
- 如果 U U U部分函数依赖于 K K K,即 K ⟶ P U K\stackrel{P}{\longrightarrow}U K⟶PU,则 K K K称为超码。候选码是最小的超码,即 K K K的任意一个真子集都不是候选码。
- 若关系模式R有多个候选码,则选定其中的一个做为主码。
- 包含在任何一个候选码中的属性 ,称为主属性。
- 不包含在任何码中的属性称为非主属性。
- 整个属性组是码,称为全码。
(6)外码
\quad
关系模式
R
R
R中属性或属性组
X
X
X并非
R
R
R的码,但
X
X
X是另一个关系模式的码,则称
X
X
X是
R
R
R的外码。
3.规范化理论
(1)
1
N
F
1NF
1NF
\quad
数据属性不可再分,不存在表中有表,就是
1
N
F
1NF
1NF。
(2)
2
N
F
2NF
2NF
\quad
若关系模式
R
∈
1
N
F
R∈1NF
R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则
R
∈
2
N
F
R∈2NF
R∈2NF。(不存在非主属性对码的部分函数依赖)
(3)
3
N
F
3NF
3NF
\quad
若关系模式
R
∈
2
N
F
R∈2NF
R∈2NF,不存在非主属性对码的传递函数依赖,则
R
∈
3
N
F
R∈3NF
R∈3NF。
(4)
B
C
N
F
BCNF
BCNF
\quad
设关系模式
R
<
U
,
F
>
∈
1
N
F
R<U,F>∈1NF
R<U,F>∈1NF,若
X
→
Y
X →Y
X→Y且
Y
⊆
X
Y ⊆ X
Y⊆X时
X
X
X必含有码,则
R
<
U
,
F
>
∈
B
C
N
F
R<U,F>∈BCNF
R<U,F>∈BCNF。
\quad
注:如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
4.关系模式规范化的基本步骤
\quad
画出依赖关系表示图,先找出主码,然后逐步消除,确定该关系模式属于哪一级别的范式。
5.数据依赖的公理系统
(1)逻辑蕴涵
\quad
对于满足一组函数依赖
F
F
F的关系模式
R
<
U
,
F
>
R <U,F>
R<U,F>,其任何一个关系
r
r
r,若函数依赖
X
→
Y
X→Y
X→Y都成立(即
r
r
r中任意两元组
t
t
t、
s
s
s,若
t
[
X
]
=
s
[
X
]
t[X]=s[X]
t[X]=s[X],则
t
[
Y
]
=
s
[
Y
]
t[Y]=s[Y]
t[Y]=s[Y]),则称
F
F
F逻辑蕴涵
X
→
Y
X →Y
X→Y。
(2)Armstrong公理系统
- 自反律:若 Y ⊆ X ⊆ U Y\subseteq X\subseteq U Y⊆X⊆U,则 X → Y X →Y X→Y 为 F F F所蕴涵。
- 增广律:若 X → Y X→Y X→Y为 F F F所蕴涵,且 X ⊆ Z X\subseteq Z X⊆Z,则 X Z → Y Z XZ→YZ XZ→YZ 为 F F F所蕴涵。
- 传递律:若 X → Y X→Y X→Y及 Y → Z Y→Z Y→Z为 F F F所蕴涵,则 X → Z X→Z X→Z 为 F F F所蕴涵。
(3)三条推理规则
- 合并规则:由 X → Y X→Y X→Y, X → Z X→Z X→Z,有 X → Y Z X→YZ X→YZ。
- 伪传递规则:由 X → Y X→Y X→Y, W Y → Z WY→Z WY→Z,有 X W → Z XW→Z XW→Z。
- 分解规则:由 X → Y X→Y X→Y及 Z ⊆ Y Z\subseteq Y Z⊆Y,有 X → Z X→Z X→Z。
引理: X → A 1 A 2 … A k X→A_1A_2…A_k X→A1A2…Ak成立的充分必要条件是 X → A i X→A_i X→Ai成立 ( i = 1 , 2 , … , k ) (i=1,2,…,k) (i=1,2,…,k)
6.几个例题
(1)
R
(
A
,
B
,
C
,
D
)
,
F
=
{
A
B
→
C
,
B
→
D
}
R(A,B,C,D),F=\{AB→C,B→D\}
R(A,B,C,D),F={AB→C,B→D}
(2)
R
(
A
,
B
,
C
,
D
,
E
)
,
F
=
{
A
B
→
C
E
,
E
→
A
B
,
C
→
D
}
R(A,B,C,D,E),F=\{AB→CE,E→AB,C→D\}
R(A,B,C,D,E),F={AB→CE,E→AB,C→D}
(3)
R
(
A
,
B
,
C
,
D
)
,
F
=
{
A
B
→
C
,
D
→
B
,
B
→
D
}
R(A,B,C,D),F=\{AB→C,D→B,B→D\}
R(A,B,C,D),F={AB→C,D→B,B→D}
(4)
R
(
A
,
B
,
C
)
,
F
=
{
A
→
B
,
A
→
C
,
B
→
A
}
R(A,B,C),F=\{A→B,A→C,B→A\}
R(A,B,C),F={A→B,A→C,B→A}
(5)
R
(
A
,
B
,
C
)
,
F
=
{
A
→
B
,
C
→
A
,
B
→
A
}
R(A,B,C),F=\{A→B,C→A,B→A\}
R(A,B,C),F={A→B,C→A,B→A}
(6)
R
(
A
,
B
,
C
,
D
)
,
F
=
{
A
→
C
,
D
→
B
}
R(A,B,C,D),F=\{A→C,D→B\}
R(A,B,C,D),F={A→C,D→B}
(7)
R
(
A
,
B
,
C
,
D
)
,
F
=
{
A
→
C
,
C
D
→
B
}
R(A,B,C,D),F=\{A→C,CD→B\}
R(A,B,C,D),F={A→C,CD→B}
下次出答案与结题过程