关系 R 是 3NF,当且仅当 R 是 2NF,并且所有非主属性都完全函数依赖于主键。

这句话的意思是,一个关系要满足 3NF,首先必须满足 2NF 的条件,即消除了部分函数依赖。在此基础上,3NF 还要求所有非主属性必须直接依赖于主键,而不能依赖于其他非主属性。

例如:

假设有一个关系模式 R(学号, 姓名, 院系, 院长),其中学号是主键。

  • 学号 → 姓名:学号唯一确定姓名
  • 学号 → 院系:学号唯一确定院系
  • 院系 → 院长:院系唯一确定院长

可以看出,院长这个非主属性并不直接依赖于主键学号,而是依赖于院系这个非主属性。这就违反了 3NF 的要求,存在传递函数依赖。

为了满足 3NF,需要将 R 分解为两个关系模式:

  • R1(学号, 姓名, 院系)
  • R2(院系, 院长)

这样,所有非主属性都直接依赖于主键,满足了 3NF 的要求,消除了数据冗余和更新异常的风险。

3NF 与 2NF 的区别:非主属性的函数依赖关系

原文地址: https://www.cveoy.top/t/topic/fYGI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录