关系数据理论

Scroll Down

第六章 关系数据理论

问题的提出

  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常

函数依赖

  1. 平凡函数依赖/非平凡函数依赖
  2. 部分函数依赖/完全函数依赖
例如:
学号 F→ 姓名  
(学号,课名) F→ 分数  
(注:因为同一个的学号对应的分数不确定,同一个课名对应的分数也不确定)
  1. 传递函数依赖

  2. 多值依赖

设R(U)是一个属性集合U上的一个关系模式,X, Y
和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r
r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。

2NF

  1. 每一个非主属性完全函数依赖于任何一个候选码
  2. 属于1NF
    不属于2NF的问题
  • 插入异常
  • 删除异常
  • 修改复杂

3NF

  1. 属于2NF
  2. 每个属性不传递函数依赖于码

BCNF

  1. 所有非主属性对每一个码都是完全函数依赖
  2. 所有主属性对每个不包含它的码也是完全函数依赖
  3. 没用任何属性完全函数依赖于码的任何一组属性
  4. 换而言之,对于函数依赖的左部必须包含所有候选码
4NF

不允许有非平凡且函数依赖的多值依赖

graph TB
1NF--消除非主属性对码的部分函数依赖-->2NF 
2NF--消除非主属性对码的传递函数依赖-->3NF
3NF--消除主属性对码的部分和传递函数依赖-->BCNF
BCNF--消除平凡且非函数依赖的多值依赖-->4NF

Armstrong公理

  1. 合并规则:

X -> Y, X -> Z, 有 X->YZ

  1. 伪传递规则

X -> Y, WY -> Z, 有 XW->Z

  1. 分解规则

X -> Y, Z 属于 Y, 有 X->Z