问题描述
在最小限度内,我具有以下功能依赖性,我希望将它们放入3NF无损联接和依赖性保留分解。
FD 1: {A} -> {B,C,D,E};
FD 2: {F} -> {G,H,I,J,K};
FD 3: {G,L} -> {M};
FD 4: {N} -> {O,P,F};
FD 5: {N,B} -> {Q,L};
键:{A,N}
密钥是A,N,并且是FD1和FD4的决定因素,我不确定我的3NF分解是否应该包含一个额外的表,该表包含FD1和FD4的所有属性,以便我可以保留密钥?还是不应该合并它们,以便在合并时减少冗余?
谢谢!
解决方法
通常,3NF是通过一种算法找到的,该算法详细说明了产生正确分解的所有步骤。在所有有关数据库的好书中都介绍了这种算法。例如,在您的情况下,所谓的“合成”算法会产生以下分解:
R1 {A B C D E}
R2 {B L N Q}
R3 {F G H I J K}
R4 {G H I L M}
R5 {F N O P}
R6 {A N}
请注意,关系R6
包含原始关系的键,这对于保证无损连接属性是必需的。