我正在研究功能依赖和规范化,我遇到了一个问题。原始问题如下:
“给定关系R = {v,w,x,y,z}和函数依赖集{v-> w,y-> z,yz-> v,wx-> z}找到BCNF组成并检查依赖性保留是否成立。“
首先,我试图找到最小的封面并想出了这个:
最小封面
v - > w ^
y - > ž
y - > v
wx - > ž
然后我试图找到候选键,只想出一个候选键:
候选键:
XY
然后我开始检查正常形式:
第一范式:检查
第二范式:
我认为以下依赖关系违反了第二范式:
1) y - > ž
2) y - > v
3) wx - > ž
前两个很容易解决。但是,我从未见过第三个例子,左边是素数和非素数属性的复合。我们如何解决这种情况?我们是否为第三个制作w和x主键建立了新的关系?
如果我解决那个部分,我猜想第3和BC普通表格很容易。
答案 0 :(得分:0)
那些FD不违反2NF。当FD(功能依赖性)的右侧由其左手侧的适当/较小子集在功能上确定时,它是partial。这三个FD中没有一个是对CK(候选键)的部分依赖。它们都不是部分的,因为没有一个具有由左手侧的子集(行列式)确定的右手侧。而且他们都没有在CK上,因为他们都没有CK作为他们的左手边。
然而,FDs xy-> z& xy-> v是部分的,因为xy的适当/较小的子集确定z& v。它们违反2NF,因为xy是CK而v是非素数属性。并且wxy-> z是部分的,因为其正确/较小的子集xy确定z(因为xy是CK,因此确定所有子集)。但它并没有违反2NF,因为它的决定因素不是CK。
你永远不会看到"一个例子[2NF-violation FD],左边是素数和非素数属性的组合"。因为违反2NF的FD的左侧是CK,所以没有非素数属性。虽然它是部分的,但它有一个适当/较小的子集,也决定了右手边。
阅读偏FD&amp ;;的部分学术定义2NF。 (许多教科书/演示文稿/课程都是免费在线的。)准确记住并应用定义,定理和算法。你似乎不理解很多事情: