关系数据库不能消除数据冗余,只能控制
关系模式的规范化
第一范式:表格中不能套表格
定义:若R的每个分量都是不可分的数据项,则R
∈
\in
∈ 1NF
从型上看:不存在嵌套结构
从值上看:不存在重复组
第二范式:不存在非主属性对码(关键字)的部分依赖
定义:若R ∈ \in ∈ 1NF,且R中的每一个非主属性都完全函数依赖于R的任一候选码,则R ∈ \in ∈ 2NF
从1NF分解为2NF的方法:破坏部分依赖的条件
考察关系表中的函数依赖关系,找出完全依赖和部分依赖,若是部分依赖,则标记出其中的主属性,再按主属性进行分解
第三范式:不存在非主属性对码的传递依赖
定义:如果关系R的任意一个非主属性都不传递函数依赖于它的任意一个候选码,则R ∈ \in ∈ 3NF
从2NF分解为3NF的方法:破坏传递依赖的条件
定理:一个3NF的关系必定是2NF
证明:反证法:假设
R
∈
3
N
F
R\in 3NF
R∈3NF,但
R
∉
2
N
F
R\notin 2NF
R∈/2NF,则R中必定存在非主属性A、候选码X与X的真子集X’,使得
X
′
→
A
X'\rightarrow A
X′→A(不满足第二范式时,存在部分依赖)
- X’是候选码X的真子集,则有 X − X ′ ≠ ∅ X-X'\not= \empty X−X′=∅;A是非主属性,则 A − X ≠ ∅ A-X\not=\empty A−X=∅, A − X ′ ≠ ∅ A-X'\not=\empty A−X′=∅。因此,A、X、X’是U的不同子集
- X’是候选码X的真子集,则有 X → X ′ X\rightarrow X' X→X′且 X ′ ↛ X X'\not\rightarrow X X′→X联合反证假设 X ′ → A X'\rightarrow A X′→A可知存在传递依赖
- 说明R不满足3NF,与假设矛盾
证毕.
现有结论:若关系R的所有属性都是主属性,则R必定是3NF
达到3NF的关系仍然可能存在问题
BCNF:对于一个关系R,每个函数左边都包含一个候选关键字
定义:关系模式R<U,F> ∈ \in ∈ 1NF。若函数依赖集合F中的所有函数依赖X → \rightarrow → Y(Y不包含于X)的左部都包含R的任一候选码,则R ∈ \in ∈ BCNF。换言之,BCF中的所有依赖的左部都必须包含候选码
在满足3NF的情况下,不一定满足BCNF范式
从3NF分解为BCNF的方法:消除不包含关系
定理:一个BCNF关系必定是3NF
证明:反证:假设R是一个BCNF,但不是3NF。则必然存在一个非主属性A和候选码X以及属性集Y,使得
X
→
Y
,
Y
↛
X
,
Y
→
A
X\rightarrow Y,\ Y\not\rightarrow X,\ Y\rightarrow A
X→Y, Y→X, Y→A
即Y不包含R的候选码,但
Y
→
A
Y\rightarrow A
Y→A却成立
此时R不满足BCNF的定义,不是BCNF,与假设矛盾
证毕.
现有结论:任何的二元关系必定是BCNF
数据依赖公理
阿氏公理
1、自反律:若
Y
⊆
X
Y\subseteq X
Y⊆X,则
X
→
Y
X\rightarrow Y
X→Y
2、增广律:若
X
→
Y
X\rightarrow Y
X→Y,
Z
⊆
U
Z\subseteq U
Z⊆U,则
X
Z
→
Y
Z
XZ\rightarrow YZ
XZ→YZ
3、传递律:若
X
→
Y
X\rightarrow Y
X→Y,
Y
→
Z
Y\rightarrow Z
Y→Z,则
X
→
Z
X\rightarrow Z
X→Z
证明:
设s,t是关系r的任意两个元组
1、自反律:若s[x]=t[x],则在s和t中的x的任何子集也相等
因为
Y
⊆
X
Y\subseteq X
Y⊆X,所以s[y]=t[y],因此
X
→
Y
X\rightarrow Y
X→Y
2、增广律:若s[xz]=t[xz],即s[x]s[z]=t[x]t[z],则s[x]=t[x]且s[z]=t[z]。因为
X
→
Y
X\rightarrow Y
X→Y,所以s[y]=t[y],所以s[yz]=s[y]s[z]=t[y]t[z]=t[yz],所以
X
Z
→
Y
Z
XZ\rightarrow YZ
XZ→YZ
3、传递律:若s[x]=t[x],因为
X
→
Y
X\rightarrow Y
X→Y,所以s[y]=t[y]。又因为
Y
→
Z
Y\rightarrow Z
Y→Z,所以s[z]=t[z],
X
→
Z
X\rightarrow Z
X→Z
公理的推论:
1、合并规则:若
X
→
Y
X\rightarrow Y
X→Y、
X
→
Z
X\rightarrow Z
X→Z,则
X
→
Y
Z
X\rightarrow YZ
X→YZ
2、分解规则:若
X
→
Y
Z
X\rightarrow YZ
X→YZ,则
X
→
Y
X\rightarrow Y
X→Y,
X
→
Z
X\rightarrow Z
X→Z
3、伪传递规则:若
X
→
Y
X\rightarrow Y
X→Y、
W
Y
→
Z
WY\rightarrow Z
WY→Z,则
W
X
→
Z
WX\rightarrow Z
WX→Z
函数依赖集的等价和覆盖
定义:如果 F + = G + F^+=G^+ F+=G+,就说函数依赖集F覆盖G或F与G等价
依赖集F的闭包 F + F^+ F+:F的所有可推导的函数依赖的全集
定理:
F
+
=
G
+
F^+=G^+
F+=G+的充分必要条件是
F
⊆
G
+
F\subseteq G^+
F⊆G+和
G
⊆
F
+
G\subseteq F^+
G⊆F+
证明:(1)必要性:因为F和G等价,所以
F
+
=
G
+
F^+=G^+
F+=G+,又因为
F
⊆
F
+
F\subseteq F^+
F⊆F+,所以
F
⊆
G
+
F\subseteq G^+
F⊆G+。同理,因为
G
⊆
G
+
G\subseteq G^+
G⊆G+,所以
G
⊆
F
+
G\subseteq F^+
G⊆F+
(2)充分性:
∀
X
→
Y
∈
F
+
\forall X\rightarrow Y\in F^+
∀X→Y∈F+,有
Y
⊆
X
F
+
Y\subseteq X_F^+
Y⊆XF+,又因为
F
⊆
G
+
F\subseteq G^+
F⊆G+,所以
Y
⊆
X
G
+
+
Y\subseteq X_{G^+}^+
Y⊆XG++。所以
X
→
Y
∈
(
G
+
)
+
=
G
+
X\rightarrow Y\in (G^+)^+ = G^+
X→Y∈(G+)+=G+,所以
F
+
⊆
G
+
F^+\subseteq G^+
F+⊆G+。同理可证
G
+
⊆
F
+
G^+ \subseteq F^+
G+⊆F+,所以
F
+
=
G
+
F^+=G^+
F+=G+,即F和G等价。
根据上述定理,在判断依赖集F和G是否等价时,只需验证 F ⊆ G + F\subseteq G^+ F⊆G+和 G ⊆ F + G\subseteq F^+ G⊆F+即可
最小函数依赖集
定义:满足下列条件的F被称为一个最小函数依赖集
F
m
F_m
Fm:
(1)F中每个函数依赖的右部都是单属性(右部没有多余的属性)
(2)对于F的任意函数依赖
X
→
A
X\rightarrow A
X→A,
F
−
{
X
→
A
}
F-\{X\rightarrow A\}
F−{X→A}与F都不等价(不存在多余的函数依赖)
(3)对于F中的任一函数依赖
X
→
A
X\rightarrow A
X→A和X的真子集Z,
(
F
−
(
X
→
A
)
)
∪
{
Z
→
A
}
(F-(X\rightarrow A))\cup\{Z\rightarrow A\}
(F−(X→A))∪{Z→A}与F都不等价(左部没有多余的属性)
定理:每个F与 F m F_m Fm等价
关系模式的分解
无损连接性与依赖保持性
对于R<U, F>中的任何一个关系r,R分解
ρ
=
{
R
1
,
R
2
,
…
,
R
k
}
\rho = \{R_1,\ R_2,\dots,R_k\}
ρ={R1, R2,…,Rk}
无损连接性:
r
=
Π
R
1
(
r
)
⋈
Π
R
2
(
r
)
⋈
⋯
⋈
Π
R
k
(
r
)
r=\Pi_{R_1}(r)\Join \Pi_{R_2}(r)\Join\cdots\Join\Pi_{R_k}(r)
r=ΠR1(r)⋈ΠR2(r)⋈⋯⋈ΠRk(r)
保持函数依赖:
F
≡
Π
R
1
(
F
)
∪
Π
R
2
(
F
)
∪
⋯
∪
Π
R
K
(
F
)
F\equiv\Pi_{R_1}(F)\cup\Pi_{R_2}(F)\cup\cdots\cup\Pi_{R_K}(F)
F≡ΠR1(F)∪ΠR2(F)∪⋯∪ΠRK(F),其中:
Π
R
i
(
F
)
=
{
X
→
Y
∣
X
→
Y
∈
F
+
∧
X
Y
⊆
R
i
}
\Pi_{R_i}(F)=\{X\rightarrow Y|X\rightarrow Y\in F^+ \wedge XY\subseteq R_i\}
ΠRi(F)={X→Y∣X→Y∈F+∧XY⊆Ri}