架构属性:A,B,C,D,E,F,G
架构的候选键是A,CF,BFG
现在我有一个小小的封面:
BG-> C,ABG-> D CF-> A-> C A-> G AD-> F AD-> E AC-> B
如何从最小限度获得3NF分解?
有人说只是将FD与左手相同,但看起来并不完全正确......
执行此操作的标准流程是什么?
答案 0 :(得分:1)
在R
给定任何依赖关系的情况下,任何R
关系模式*都可以分解为3NF形式的多个关系。
如果您有以下G
最小保障:
G = { X1 -> A1, X2 -> A2, ..., Xn ->An}
正确的3NF,无损,依赖保留分解可以如下:
r = {X1A1, X2A2, ..., XnAn} U {K}
其中K
是R
关系的关键。
r
分解会保留原始依赖项,因为投射在已分解部分上的每个依赖项都会为G
集中的原始依赖项集提供一个依赖项。
r
分解也导致3NF关系。
1;只有无损分解才需要K
。如果只需要依赖保留,则不必添加它。
2;在构造r
分解期间,r的某些Ri
部分可能包含原始R
关系的键。这次您不必使用密钥添加plus模式,因为密钥已经包含在分解中。
*:必须至少为1NF格式,因此属性是原子的。
您的架构和依赖关系集的示例
依赖集:
BG->C, ABG->D, CF->A, A->C, A->G, AD->F, AD->E, AC->B
候选键集:
A, CF, BFG
无损,依赖性保留3NF分解:
BGC, ABGD, CFA, AC, AG, ADF, ADE, ACB
如您所见,分析中已包含一个密钥,因此您无需添加该密钥。