找出2NF的功能依赖性

时间:2016-03-25 01:03:46

标签: database database-normalization functional-dependencies

我有一个由{A,B,C,D,E,F}组成的关系R,以下是依赖关系:

{A} -> {C,F}
{C} -> {D}
{B} -> {E}

这必须相应地转换为2NF和3NF。

我刚刚相应地转换了它们。

如果以下表格有效,请您验证并告诉我吗?

2NF:

{A,C,F,D}
{B,E}

3NF:

{A,C,F}
{C,D}
{B,E}

1 个答案:

答案 0 :(得分:0)

3NF中的转换不正确,因为您的分解不是“数据保留”(即,如果您有关系R的实例,并将其投影到分解关系的属性上,当你进行它们的自然连接时,你会得到一个与R)不同的关系。

原因是R的(唯一)候选键是{A,B},并且这两个属性必须同时存在于分解关系中。因此,在用于分解3NF中的模式的合成算法中,最后一步表示如果在任何分解的关系中不存在原始关系的候选键,则必须添加具有键的模式。所以正确的分解如下:

R1 < (A C F), { A → C F } >

R2 < (B E), { B → E } >

R3 < (C D), { C → D } >

R4 < (A B), { } >