用处:指导关系模型的设计,规范以及优化
非原子 --> 存储复杂,数据冗余
改进:1NF
处理:
- 复合属性:拆分成多个属性
- 多值属性:创建新的一张表(eg. 一个人有多个手机号)
函数依赖(FD)
单值映射
码是一种特殊的FD:
比如超码:可以唯一标识一个元组(SK -> R)
候选码(最小超码):CK -> R 且 不存在CK的子集可以 -> R
FD的作用:可以检测某个关系实例在某个FD下是否合法
实例r(值)满足F,不代表模式R(型)满足F (要基于R的语义):
Trivial FD: 我决定我自己: A -> A, AB -> A …
完全函数依赖 & 部分函数依赖
候选码就是完全函数依赖(最小属性集, 主属性)
超码是部分函数依赖(存在子集同样可以函数决定,存在非受控冗余)
函数依赖集的闭包
F的完全集:F+ (包含所有被逻辑蕴含的FD)
Armstrong 公理:
-
自反律: Trivial FD