检查给定关系中违反 2NF 的哪个函数依赖 (FD),并将 R 分解为 2NF


规范化是组织数据库中数据的过程。它有助于消除数据库中的重复值。规范化将大型表划分为较小的表,并使用关系将它们链接起来。

范式用于减少数据库表中的冗余。规范化是简化记录中数据元素之间关系的过程的名称。

简单来说:

规范化是组织数据以最小化的过程。

  • 冗余/重复。
  • 插入、删除、更新异常。

范式

共有六种范式,如下所示:

  • 第一范式 (1NF)
  • 第二范式 (2NF)
  • 第三范式 (3NF)
  • Boyce-Codd 范式 (BCNF)
  • 第四范式 (4NF)
  • 第五范式 (5NF)

问题

对于给定的关系 R(ABCDE) 和 F:{A->C,B->DE,D->C},检查哪个函数依赖 (FD) 违反了 2NF,并将 R 分解为 2NF。

解决方案

在 2NF 中,关系必须处于 1NF。在第二范式中,所有非键属性都完全函数依赖于主键。当关系处于 1NF 且不存在部分依赖性时,该关系处于 2NF。

A+ = AC => A 不是候选键

B+ = BDEC => B 不是候选键

D+ = DC => D 不是候选键

AB+ = ACBDE => AB 是一个候选键

=> 键属性 = A, B 和非键属性 = C, D, E。

A->C 违反 2NF [因为 A->C 是部分依赖]

B->DE 违反 2NF [因为 B->DE 是部分依赖]

D->C 符合 2NF [因为 D->C 不是部分依赖]

2NF 分解如下:

我们考虑违反 2NF 的 FD,它们如下:

对于 A->C,R(ABCDE) 分解为 R1(AC) 和 R2(ABDE)

对于 B->DE,R2(ABDE) 分解为 R3(BDEC) 和 R4(AB)。

=> 关系 R 的 2NF 分解是 R1(AC)、R3(BDEC)、R4(AB)。

更新于:2021年7月3日

6000+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告