跳到主要内容

依赖的分类

传递依赖与直接依赖如何区分?​

  • 传递依赖: 借助传递规则、经过中间属性组传导而成立的依赖;
  • 直接依赖: 非传递的依赖;
  • 例子: A→BA \rightarrow B 且 B→CB \rightarrow C 时, 由 A→CA \rightarrow C 得到的是传递依赖;

部分依赖与完全依赖如何区分?​

  • 部分依赖: A→BA \rightarrow B 成立, 且存在 AA 的真子集也能函数决定 BB;
  • 完全依赖: A→BA \rightarrow B 成立, 且 AA 的任一真子集都不能函数决定 BB;
  • 直觉: 部分依赖说明决定属性集里有多余的属性, 完全依赖说明每个属性都不可省;

依赖分类对应哪些范式要求?​

范式要消除的依赖
2NF部分函数依赖
3NF传递依赖
4NF多值依赖
  • 说明: 每一级范式都针对上一级遗留的依赖类型继续分解, 详见 范式概览;

(source: 020-关系数据库设计理论.md §函数依赖/§传递依赖和直接依赖/§部分依赖/§完全依赖)