2017-03-14 19 views
0

R(ABCDEFG)とF = {AB-> CD、C-> EF、G-> A、G-> F、CE-> F}の問題があります。明らかに、B & Gは、それらが従属集合の一部ではないので、鍵の一部でなければならない。さらに、BG + = ABCDEFG、したがって候補キー。明らかに、AB-> CDはBCNFに違反します。しかし、私がアルゴリズムに従うと、私はどんな答えにも終わらない。おそらく何か間違っている。誰かが分解に達するアルゴリズムを正しく適用する方法を私に教えてもらえますか?BCNF分解アルゴリズムが機能しない

ありがとうございます。

答えて

0

まず、依存関係の標準的なカバーを計算する必要があります。この場合には、(一意の)候補キーがB G、機能的依存関係を満たすBNCFある

{ A B → C 
    A B → D 
    C → E 
    C → F 
    G → A 
    G → F } > 

ので。次に、BCNFに違反する任意の関数従属X → Yから、X,X+のクロージャを計算し、元の関係R<T,F>を2つの関係R1<X+>R2<T - X+ + X>に置き換えます。そうでない場合は、我々が適用され、その後

R2 < (A B G) , 
    { G → A } > 

我々はそれがBCNFを満たすかどうかを確認するために、各分解の関係を確認してください。

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

と:だから、この場合には、依存関係A B → Cを択一、我々は、元の関係に置き換えます再帰アルゴリズム。この場合

は、例えば、 R1に重要なので C -> EはBCNFに違反し、 A Bであり、我々はと R1を置き換える:

R3 < (C E F) , 
    { C → E 
     C → F } > 

と:満足

R4 < (A B C D) , 
    { A B → C 
     A B → D } > 

2つの関係をBCNF。

R5 < (A G) , 
    { G → A } > 

と::(キーはB Gあるbeacuse)R2があまりにもBCNFを満たしていないため、

最後に、我々はR2に分解BCNFである

R6 < (B G) , 
     { } > 

を。

したがって、最終的な分解は、R3,R4,R5およびR6の関係で構成されます。また元の関係の依存関係G → Fが分解されてに失われていることにも気付くことができます。

+0

ご返信いただきありがとうございます。私はまだ混乱している。 R1とR2に分解されると、FD:G→Fが消えてしまったようです。これは私が最初から混乱していたところです。分解しながらFDのいくつかを落とすことはOKですか?これについての私の理解は非常に不明です。助けていただければ幸いです。 – Rana

+0

@Rana私が答えの最後の文章で言ったように、「元の関係のG→Fへの依存性が分解で失われることにも気付くことができます」実際、アルゴリズムによって得られた分解BCNFの場合、依存関係が失われます。これは、元のスキーマ(機能の依存関係が整合性制約とみなされるため、整合性制約)に関する重要な情報を失ってしまったという意味で、否定的な事実です。 – Renzo

+0

BCNFの代わりに3NF(Third Normal Form)を使用することができます。分解アルゴリズムは依存関係が失われないことを保証します(ただし結果に冗長性のようないくつかの異常があることがあります)。実際、これは正規化理論でよく知られている事実であり、実際にはBCNFではなく3NFが実際に使用されています。 – Renzo

関連する問題