什么是 DBMS 中的 4NF?
如果关系 R 在 BCNF 中并且没有非平凡的多值依赖关系,则它在 4NF 中。
对于依赖 A->B,如果对于 A 的单个值,存在多个 B 值,则该关系将是多值依赖。
示例
考虑下表
雷尼奥 | 号码 | 资质 |
---|---|---|
1 | P1 | Diploma |
1 | P1 | B.Tech |
1 | P1 | M.Tech |
1 | P2 | Diploma |
1 | P2 | B.Tech |
1 | P2 | M.Tech |
这里,
regno->-> 号码
regno->-> 资格。
两者都是非平凡的 MVD
给定的关系在 BCNF 中[因为不存在函数依赖]。但是上表不在 4NF 中[因为有一个非平凡的 MVD]。
异常
它还存在以下异常情况 -
插入异常:如果我们想为 regno3 插入一个新的 phoneno,那么我们必须插入 3 行,因为对于每个 phoneno,我们已经存储了所有三种限定组合。
删除异常:如果我们要删除资格证书,那么我们必须在不止一个地方删除它。
更新异常:如果我们要将资格证书更新为IT,那么我们必须在不止一个地方更新。
4NF分解
如果R(XYZP)有 X->->Y 和 X->->Z 那么,R 被分解为 R1(XY) 和 R2(XZP)。
=>R(regno, phoneno, qualification)分解为 R1(regno, phoneno) 和 R2(regno,qualification)。
R1
雷尼奥 | 号码 |
---|---|
1 | P1 |
1 | P2 |
R2
雷尼奥 | 资质 |
---|---|
1 | 文凭 |
1 | B.Tech |
1 | 科技 |
上面讨论的所有异常都被删除了。以上两个关系在4NF中。
现在, regno->->phoneno 是微不足道的 MVD(因为 {regno} U {phoneno}=R1)
=> R1 在 4NF 中。
Regno->-> 资格是微不足道的 MVD(因为 {regno} U {qualification} =R2)
=> R2 在 4NF。
以上是 什么是 DBMS 中的 4NF? 的全部内容, 来源链接: utcz.com/z/356785.html