问题的提出

  • 关系模式的表示
    • 关系模式由五部分组成, 是一个五元组: R(U, D, DOM, F)
    • R: 关系名
    • U: 一组属性
    • D: 属性组U中的属性所来自的域
    • DOM: 属性到域的映射
    • F: 属性组U上的一组数据依赖
  • 数据依赖
    • 一个关系内部属性之间的一种约束关系
    • 函数依赖 (FD)
    • 多值依赖 (MVD)
  • 函数依赖
    • x->y 表示为 y函数依赖于x
  • 函数依赖存在的问题
    • 数据冗余
    • 更新异常
    • 插入异常
    • 删除异常
  • 函数依赖的解决方式
    • 把单一的模式分成多个关系模式
    • 分离不合适的函数依赖

规范化

函数依赖

  • x->y 表示为 x函数确定y 或 y函数依赖于x

  • 非平凡函数依赖 平凡函数依赖

  • 完全函数依赖(F) 部分函数依赖(P)

  • 传递函数依赖

码 (关键字/键)

  • 候选码

    • 主属性
    • 非属性
    • 全码: 属性组的所有属性都是码
  • 超码

  • 主码

  • 外码

范式

  • 符合某一种级别的关系模式的集合

    image-20250119202735410

2NF

  • 消除非主属性对码的部分函数依赖

  • 每一个非主属性都完全函数依赖于任何一个候选码

  • 不属于2NF, 会产生

    • 插入异常
    • 删除异常
    • 修改复杂
  • 解决方法: 用投影分解把关系模式分成多个关系模式

3NF

  • 消除非主属性对码的传递函数依赖

BCNF

  • 消除主属性对码的部分和传递函数依赖

  • 是修正的第三范式

  • 函数依赖左边必须是码

  • 性质

    • 所有非主属性都完全函数依赖于每个候选码
    • 所有主属性都完全函数依赖于每个不包含它的候选码
    • 没有任何属性完全函数依赖于非码的任何一组属性
  • 如果一个关系数据库中的所有关系模式都属于BCNF, 那么在函数依赖范畴内, 它已实现了模式的彻底分解

多值依赖**

image-20250119202743731

  • 平凡多值依赖

  • 非平凡多值依赖

    image-20250119202748085

  • 性质

    • 有对称性
    • 有传递性
    • 函数依赖是多值依赖的特殊情况image-20250119202752366
  • 多值依赖与函数依赖的区别

    • 多值依赖的有效性与属性集的范围有关

      image-20250119202759650

4NF

  • 消除非平凡且非函数依赖的多值依赖