模式属性:A、B、C、D、E、F、G
模式的候选键是 A、CF、BFG
现在我有以下最小封面:
BG->C, ABG->D CF->A A->C A->G AD->F AD->E AC->B
如何从最小覆盖中获得 3NF 分解?
有人说只需将 FD 与相同的左侧结合起来,但这似乎并不完全正确......
执行此操作的标准流程是什么?
模式属性:A、B、C、D、E、F、G
模式的候选键是 A、CF、BFG
现在我有以下最小封面:
BG->C, ABG->D CF->A A->C A->G AD->F AD->E AC->B
如何从最小覆盖中获得 3NF 分解?
有人说只需将 FD 与相同的左侧结合起来,但这似乎并不完全正确......
执行此操作的标准流程是什么?
任何R
关系模式*都可以分解为 3NF 形式的多个关系,给定对R
.
如果您有以下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
分解的构造过程中Ri
,r 的某些部分可能包含原始R
关系的键。这次您不必添加带有密钥的加模式,因为密钥已包含在分解中。
*:必须至少是 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
如您所见,分解中已包含一个键,因此您不必添加它。