从MINIMAL COVER获得3NF

时间:2013-11-20 13:41:27

标签: database database-design relational-database database-schema 3nf

架构属性: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与左手相同,但看起来并不完全正确......

执行此操作的标准流程是什么?

1 个答案:

答案 0 :(得分:1)

R给定任何依赖关系的情况下,任何R关系模式*都可以分解为3NF形式的多个关系。

如果您有以下G最小保障:

G = { X1 -> A1, X2 -> A2, ..., Xn ->An}

正确的3NF,无损,依赖保留分解可以如下:

r = {X1A1, X2A2, ..., XnAn} U {K}其中KR关系的关键。

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

如您所见,分析中已包含一个密钥,因此您无需添加该密钥。