什么是 DBMS 中的 4NF?
如果关系R在BCNF中并且没有非平凡的多值依赖关系,则它在4NF中。
对于依赖A->B,如果对于A的单个值,存在多个B值,则该关系将是多值依赖。
示例
考虑下表
这里,
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
R2
上面讨论的所有异常都被删除了。以上两个关系在4NF中。
现在,regno->->phoneno是微不足道的MVD(因为{regno}U{phoneno}=R1)
=>R1在4NF中。
Regno->->资格是微不足道的MVD(因为{regno}U{qualification}=R2)
=>R2在4NF。