我试图将这种关系转换为第三范式和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是什么?
如果您需要任何进一步的信息,请告诉我。
谢谢您的帮助。
鉴于如果每个行列式都是超级密钥或每个确定属性是素数,则模式在3NF中,该模式已经在3NF中。事实上,R
的唯一候选键是{A1, A2}
和{A2, A3}
。 A2
必须在每个键中,因为它不会出现在依赖项的任何右侧。如果你添加它A1
你可以发现你获得一个候选键,因为A1, A2
确定所有的属性,如果你试图将A3
添加到A2
相同。这不是真的添加A4
,A1
,A2
和A3
是主要属性,没有功能依赖性违反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
将丢失。