数据库-规范化
函数依赖
设 R(U)是属性集 U 上的关系模式,X,Y 是 U 的子集。若对于 R(U)的任意一个可能的关系 r,r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称 X函数确定Y 或 Y 函数依赖于 X,记作$X \rightarrow Y$。
术语&记号
$X \rightarrow Y$,但 $Y\nsubseteq X$,则称$X \rightarrow Y$是非平凡的函数依赖。
$X \rightarrow Y$,但 $Y\subseteq X$,则称$X \rightarrow Y$是平凡的函数依赖。对于任一关系模式,平凡还是依赖总是成立。
若 $X \rightarrow Y$,则称 X 为这个函数依赖的决定属性组,也称决定因素。
若 $X \rightarrow Y$,$Y \rightarrow X$,则记作 $X \leftarrow \rightarrow Y$。
若 Y 不函数依赖于 X,则记作 $X \nrightarrow Y$。在 R(U) 中,如果 $X \rightarrow Y$,并且对于X 的任何一个真子集 $X^{‘}$, 都有 $X^{‘} \nrightarrow Y$,则 Y 对 X 完全函数依赖,记作
$$ X \mathop{\rightarrow}^{ F} Y$$
否则为部分函数依赖,记作
$$ X \mathop{\rightarrow}^{ P} Y$$- 在 R(U) 中,如果 $X \rightarrow Y(Y\nsubseteq X)$,$Y \nrightarrow X$,$Y \rightarrow Z$,$Z\nsubseteq Y$ 则称 Z 对 X传递函数依赖。记作$ X \mathop{\rightarrow}^{传递} Y $。
码
- 设 K 为 R< U,F> 中的属性和属性组合,若 $ K \mathop{\rightarrow}^{ F} U$,则K 为 R的候选码。
若 U 部分函数依赖于 K ,即 $ K \mathop{\rightarrow}^{ P} U$,则 K 成为 超码。候选码是最小的超码。若候选码多于一个,则选定其中的一个为主码。
包含在任何一个候选码中的属性称为主属性;反之为非主属性。 - 关系模式 R 中的属性或属性组 X 并非 R 的码,但X 是另一个关系模式的码,则称 X 是 R的外部码,也称外码。
主码和外码提供了一个表示关系间联系的手段。
- 设 K 为 R< U,F> 中的属性和属性组合,若 $ K \mathop{\rightarrow}^{ F} U$,则K 为 R的候选码。
范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。- 1NF
- 2NF
若 $R \in 1NF$, 且每一个非主属性完全函数依赖于任何一个候选码,则$R \in 2NF$。
不满足2NF会产生插入异常、上除异常以及修改复杂等问题。 - 3NF
设关系模式 $R< U,F> \in 1NF$,若R 中不存在这样的码 X,属性组 Y及非属性组$ Z(Z \nsupseteq Y)$ 使得 $X \rightarrow Y$,$Y \rightarrow Z$成立,$Y \nrightarrow X$,则称 $R< U,F> \in 3NF$ - BCNF
多值依赖&4NF