满足函数依赖关系(DBMS)的范式最高?
让我们取依赖关系F={AB->CDEF,AF->ED,F->B}以下之一是表R=ABCDEF可以满足的最高范式。
从以下选项中选择任何一项-
没有标准形式会被满足。
博伊斯-科德范式
第一范式
第二范式
第三范式
给定F的函数依赖关系如下-
AB--->CDEF
AF--->ED
F--->B
现在在F的函数依赖关系的RHS(右侧)中,属性B、C、D、E、F都存在,但缺少属性A。因此,属性A必须是SuperKey的一部分。
我们必须找到A(A+)的闭包,
A+=Aonly,所以单独的属性A不能成为关键。因此,我们必须将A与F的其他属性结合起来,然后找到F的候选键。
找到F的候选键
AB+=ABCDEF
AC+=AC
AD+=AD
AE+=AE
AF+=AFBCDE
现在由于(AC,AD,AE)的闭包并没有覆盖F的所有属性。所以我们又要组合AC、AD、AE来检查它们的组合是否成为F的候选键。
所以ACD+=ACD
ACE+=ACE
ADE+=ADE
ACDE+=ACDE
所以最后,我们确认AB和AF是F的唯一候选键,因为它们的闭包覆盖了F的所有属性。
所以F的素数属性是A、B、F,F的非素数属性是C、D、E。
检查最高范式(NF)
我们将从最高范式开始,其中BCNF形式是最高范式,如果F是BCNF范式,那么它也将在1NF、2NF和3NF下。
检查BCNF
FX的所有函数依赖--->Y,其中所有X必须是超级键。
在以下F的所有功能规范中,只有AF和AB是超级键,但F不是超级键。
(AB--->CDE,AF--->ED,F--->B)
所以F不在BCNF中,因为(X--->Y)的所有X都不是超级键。
检查3NF
对于F在3NF中,不应该出现非主要属性的传递函数依赖,或者说F中的非主要属性不应该派生到其他非主要属性。
而在F(X-->Y)中,Functional依赖的所有X都是作为AF的素数属性,AB是超级键,F是素数属性。所以,没有发生传递依赖,因此它在3NF中。
并且F也在2NF中,因为那里没有部分依赖关系,即候选键的任何部分都不会派生到任何非主要属性。
如果F属于3NF,那么它也属于2NF和1NF。因为3NF是其中最高的范式。
结论
该表R(A,B,C,D,E)满足3NF。