检查给定关系中违反 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)。
广告