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

问题描述 投票:-1回答:1

我试图将这种关系转换为第三范式和BCNF。

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

A2,A3→A4;

A3,A4→A1;

A1,A2→A3。

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

我记得这样做但是生气了。

这是我的开始。

我分为功能依赖A2,A3-> A4

这样就产生了:

P1(A2,A3,A3)

P2(A1,A2,A2)

由于没有任何功能或传递依赖,因此应该在3NF中。

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

第二,因为R1的键(A2,A3)和R2的(A1,A2)都是复合键,这也不是在BCNF中吗?

我想知道这是否属实,如果不是这个关系的BCNF是什么?

如果您需要任何进一步的信息,请告诉我。

谢谢您的帮助。

database relational-database relationship database-normalization bcnf
1个回答
1
投票

鉴于如果每个行列式都是超级密钥或每个确定属性是素数,则模式在3NF中,该模式已经在3NF中。事实上,R的唯一候选键是{A1, A2}{A2, A3}A2必须在每个键中,因为它不会出现在依赖项的任何右侧。如果你添加它A1你可以发现你获得一个候选键,因为A1, A2确定所有的属性,如果你试图将A3添加到A2相同。这不是真的添加A4A1A2A3是主要属性,没有功能依赖性违反3NF。

鉴于模式在BCNF中,如果每个非平凡的依赖关系都有一个超级密钥确定,那么您的模式不在BCNF中用于依赖关系A3, A4 → A1,因为{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将丢失。

© www.soinside.com 2019 - 2024. All rights reserved.