关系数据理论
规范化
函数依赖
定义: 设$R(U)$是属性集$U$上的关系模式,$X$、$Y$是$U$的子集。若对$R(U)$的任意一个可能的关系$r$,$r$中不可能存在两个元组在$X$上的属性值相等,而在$Y$上的属性值不相等,则称X函数确定Y或Y函数依赖于X,记作$X\rightarrow Y$。
函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖。例如,$姓名\rightarrow 性别$这个函数依赖只有当没有男女生同名的情况下才成立。
下面是一些记号和术语。
- $X\rightarrow Y$但$Y\subsetneq X$,则称$X\rightarrow Y$是非平凡的函数依赖。
- $X\rightarrow Y$但$Y\subseteq X$,则称$X\rightarrow Y$是平凡的函数依赖。对于任意关系模式,平凡的函数依赖必然成立,不反映新的语义。若无特别声明,我们总是考虑非平凡的函数依赖。
- 若$X\rightarrow Y$,则$X$成为这个函数依赖的决定属性组,也称为决定因素。
- 若$X\rightarrow Y$,$Y\to X$,则记作$X\leftarrow \rightarrow Y$。
- 若$Y$不函数依赖于$X$,则记作$X\nrightarrow Y$
定义:在$R(U)$中,如果$X\rightarrow Y$,并且对$X$的任意一个真子集$X^{‘}$ 都有$X^{‘} \nrightarrow Y$,则称$Y$对$X$完全函数依赖,记作$X\overset{F}{\rightarrow} Y$,否则称$Y$对$X$部分函数依赖,记作$X\overset{P}{\rightarrow} Y$。
定义:在$R(U)$中,如果$X\rightarrow Y$,($Y\subsetneq X$),$Y\nrightarrow X$,$Y\rightarrow Z$,$Z\subsetneq Y$则称$Z$对$X$传递函数依赖。记为$X\overset{传递}{\rightarrow} Z$。
$eg.$ $Sno\rightarrow Sdept$,$Sdept\rightarrow Mname$成立,所以$Sno\overset{传递}{\rightarrow} Mname$
这里加上了条件$Y\nrightarrow X$,是因为如果$Y\rightarrow X$,则$X\leftarrow \rightarrow Y$,实际上是$X\overset{直接}{\rightarrow} Z$,是直接函数依赖而不是传递函数依赖。
范式
$1NF$:字段不可再分(基于功能)
$2NF$:满足$1NF$前提下,每个表中应该有一个主键,其他字段依赖于主键
$3NF$:满足$2NF$前提下,不存在非主属性对主键的传递函数依赖




