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

dbmsdatabasebig data analytics更新于 2026/1/13 4:37:17

当关系符合 2NF 且不存在传递依赖时,该关系符合 3NF;当关系符合 2NF 且所有非键属性都直接依赖于候选键时,该关系符合 3NF。

第三范式 (3NF) 是数据库规范化的第三步,它建立在第一范式和第二范式(1NF 和 2NF)的基础上。

3NF 规定,引用数据中所有不依赖于主键的列引用都应删除。换句话说,只有外键列才能用于引用另一个表,并且被引用的表中不应存在父表中的其他列。

问题

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

解决方案

给定 F:{A->C, B->DE, D->C}

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

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

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

AB+=ACBDE => AB 是候选键

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

A->C 违反 3NF [因为 A->C 是传递依赖]

B->DE 违反 3NF [因为 B->DE 是传递依赖]

D->C 违反 3NF [因为 D->C 是传递依赖]。

3NF 分解如下 −

我们考虑违反 3NF − 的函数表达式

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

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

对于D->C,R3(BDEC)分解为R5(DC)和R6(BDE)。

=>关系R的3NF分解为R1(AC)、R4(AB)、R5(DC)、R6(BDE)。


相关文章