将关系转换为第三范式和BCNF检查工作

时间:2018-09-08 01:12:50

标签: database relational-database relationship database-normalization bcnf

我正在尝试将此关系转换为3rd Normal Form和BCNF。

给出具有三个FD的关系R(A1,A2,A3,A4)

A2,A3→A4;

A3,A4→A1;

A1,A2→A3。

提供架构的3NF和BCNF形式并解释原因。

我记得这样做了,但是很生锈。

这是我的开始。

我对功能依赖性A2,A3-> A4进行了划分

因此创建:

R1(A2,A3,A4)

R2(A1,A2,A3)

由于没有更多的功能性或传递性依赖性,因此应在3NF中。

如果这种方法正确,我的问题是第一个。

第二,因为R1的两个键(A2,A3)和R2的(A1,A2)都是复合键,难道不是也存在于BCNF中吗?

我想知道这是否是真的,如果不是这种关系的BCNF是什么?

如果您需要更多信息,请告诉我。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

鉴于如果每个行列式都是超键或每个确定属性都是质数,则该模式位于3NF中,那么该模式已位于3NF中。实际上,R的唯一候选键是{A1, A2}{A2, A3}A2必须位于每个键中,因为它不会出现在依赖项的任何右侧。如果将其添加到A1中,则会发现您获得了候选键,因为A1, A2确定了所有属性,并且尝试将A3添加到A2时也是如此。添加A4A1A2A3是主要属性,并且没有任何函数依赖性违反3NF的说法是不正确的。

鉴于以下事实:如果每个非平凡的依赖项都有一个超键决定因素,那么该模式就在BCNF中,那么对于A3, A4 → A1的依赖项,您的模式就不在BCNF中,因为{A3, A4}不是超级键。

应用“分析”算法在BNCF中生成分解模式,可以使用依赖项A3, A4 → A1在BCNF中分解,这产生两个关系:

R1 (A1, A3, A4) (with candidate key {A3, A4})
R2 (A2, A3, A4) (with candidate key {A2, A3})

两者都在BCNF中,因此不需要进一步分解,但是请注意,在此过程中,依赖项A1 A2 → A3丢失了。