模式R= (A,B,C,D,E)
函数依赖性F1 = {A->BC,CD->E,B->D,E->A}
函数依赖性F2 = {A->D,A->E,DE->BC,B->A,D->C}
根据F1,候选密钥- A,E,BC,CD
根据F2,候选密钥- A,B,DE
模式在3NF中的条件:
对于所有X->Y,至少有一个是正确的:
我知道,根据F1,R在3NF中,而在3NF中,F2没有。
根据F2,r不在3NF中,因为在函数依赖D->C中,
现在我如何把它转换成3NF呢?
我尝试了以下几点:
将R分解为(A,B,D,E) (C,D) (B,C,D,E),从而保持依赖关系。
这是正确的,还有其他方法来分解吗?
发布于 2015-11-14 11:45:16
示例的第三种正常形式的分解如下(在每个模式之后,我将函数依赖项的投影放在它上):
R1 <(A D E), {A → DE, DE → A}>
R2 <(B D E), {DE → B, B → DE}>
R3 <(A B), {B → A, B → A}>
R4 <(C D), {D → C}> 所使用的算法是经典的伯恩斯坦算法算法。该算法的概要如下:
注意,您的分解是不正确的。
发布于 2017-05-25 02:28:12
所以,如果你想要分解成一个特定的NF (范式),使用一个已经被证明是这样的算法。
https://stackoverflow.com/questions/33703457
复制相似问题