问题的提出
关系模式由五部分组成,是一个五元组:R(U, D, DOM, F)
- R是符号化的元组语义
- U为一组属性
- D为属性组U中的属性所来自的域
- DOM为属性到域的映射
- F为属性组U上的一组数据依赖
作为一个二维表,每一个分量必须是不可分的数据项,满足这个条件的关系模式就属于第一范式。
数据依赖是一个关系内部属性与属性之间的一种约束关系
主要包括:函数依赖 和 多值依赖。
规范化
函数依赖
定义
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在:两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
非平凡的函数依赖和平凡的函数依赖
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
若X→Y,则X称为决定因素
若X→Y,Y→X,则记作X←→Y。
完全函数依赖、部分函数依赖
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有
X
′
→
/
Y
X'\stackrel{/}{\rightarrow} Y
X′→/Y, 则称Y对X 完全函数依赖,记作
X
→
F
Y
X \stackrel{F}{\rightarrow} Y
X→FY
若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作
X
→
P
Y
X \stackrel{P}{\rightarrow} Y
X→PY
传递函数依赖
在R(U)中,如果X→Y(Y⊈X),
Y
→
/
X
Y\stackrel{/}{\rightarrow} X
Y→/X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:
X
→
传
递
Z
X\stackrel{传递}{\rightarrow} Z
X→传递Z。
如果Y→X, 即X←→Y,不是传递函数依赖,而是Z直接依赖于X。
码
设K为R<U,F>中的属性或属性组合,若
K
→
F
U
K\stackrel{F}{\rightarrow} U
K→FU则K称为R的一个候选码。
如果U部分函数依赖于K,即K → U,则K称为超码 。
候选码是最小的超码。
包含在任何一个候选码中的属性称为主属性,不包含任何候选码中的属性称为非主属性。
主码或者候选码都简称为码
整个属性组是码的情况,称为全码
范式
某一关系模式R为第n范式,可简记为R∈nNF。
2NF定义:
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
3NF定义:
设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z (Y⊇ Z), 使得X→Y,Y→Z成立,Y ↛ X不成立,
则称R<U,F> ∈ 3NF。
即不存在传递函数依赖
BCNF定义:
设关系模式R<U,F>∈1NF,若X →Y且Y 不含于 X时X必含有码,则R<U,F>∈BCNF。在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。非主属性对候选码没有部分函数依赖或传递依赖。
多值依赖
定义:
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖。
否则称X→→Y为非平凡的多值依赖。
4NF
定义:
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
数据依赖的公理系统
闭包
在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫做F的闭包
,记为F^+.就是由一个属性直接或间接推导出的所有属性的集合。
L类 仅出现在函数依赖左部的属性。必在码中
R 类 仅出现在函数依赖右部的属性。必不在码中
N 类 在函数依赖左右两边均未出现的属性。必在码中
LR类 在函数依赖左右两边均出现的属性。
(4)因为DA是码
A
→
B
C
A\stackrel{}{\rightarrow} BC
A→BC,所以DBC也是码,因为DA=DBC?
因为E
→
\rightarrow
→C,所以DBC=DBE?
所以DA是码,函数依赖于DA的都可以当候选码。