20

リレーションシップがBoyce-Codd Normal Formに設定されているときにBCNFを分解する方法がわかりません。この例を考える:機能的な依存関係を持つBCNFにリレーションを分解する

R(A、C、B、D、E):A - > B、C - > D

どのように私はそれを分解して行くのですか?

私が撮影した手順は以下のとおりです。

A+ = AB 
C+ = CD 
R1 = A+ = **AB** 
R2 = ACDE (since elements of C+ still exist, continue decomposing) 
R3 = C+ = **CD** 

R4 = ACE(なしFDの閉鎖は、この関係に存在していない)

だから今は、ACEは、全体の関係を構成することを知っているが、分解の答えは、AB、CD、ACEです。

私は、関係を適切にBCNF形式に分解する方法と、いつ完了したかを伝える方法に苦労していると思います。これらの問題を解決する際に私の思考過程を歩いてくれる人は本当に感謝しています。ありがとう!

+0

サイドバーのBCNFに関する質問はすべて読まれましたか? –

+0

分解を助けると思われる1つの例を読みました。私はその部分が大丈夫だと私は思うが、分解が完全に終わったときはまだ少し混乱している。あなたの関係に、あなたの関数的な依存関係の1つのクロージャ内のすべての属性が含まれなくなったのでしょうか? – raphnguyen

+0

すべての機能依存関係のすべての「矢印」が候補キーの「矢印」である場合、関係はBCNFにあります。 –

答えて

83

質問は古いですが、他の質問/回答は、BCNFとの関係を決定し、分解するための非常に明確なステップバイステップの一般的な答えを提供していないようです。

1 BCNF決定:関係RはBCNFであるために
は、Rに保持するすべての機能の依存関係(のFD)が決定XはR.すなわちすべてのsuperkeysある特性を満足する必要がある場合にX- > YがRで成り立つならば、XはRのスーパーキーでBCNFになければならない。

あなたのケースでは、唯一の候補キー(最小限のスーパーキー)がACEであることがわかります。 RはBCNFでない場合
: したがって、両方のFD:AとCの両方がBCNF形態にsuperkeys又はR.

2デコンポーズRされないようにA-> B及びC-> DはBCNFに違反していますRをBCNFにあるリレーションSの集合に分解する。
これは非常に単純なアルゴリズムを用いて達成することができる。

Initialize S = {R} 
While S has a relation R' that is not in BCNF do: 
    Pick a FD: X->Y that holds in R' and violates BCNF 
    Add the relation XY to S 
    Update R' = R'-Y 
Return S 

次のようにあなたのケースでは、反復手順は次のとおり

S = {ABCDE}  // Intialization S = {R} 
S = {ACDE, AB} // Pick FD: A->B which violates BCNF 
S = {ACE, AB, CD} // Pick FD: C->D which violates BCNF 
// Return S as all relations are in BCNF 

従ってR(A、B、C、D、E)でありますBCNFを満たすR1(A、C、E)、R2(A、B)、R3(C、D)の関係に分解されます。

この場合、関数の依存関係は保持されますが、BCNFへの正規化ではこれが保証されないことにも注意してください。

こちらがお役に立てば幸いです。

+3

あなたの説明とステップバイステップの反復は完璧でした。ありがとうございました –

+0

すべての反復でタプル '(R '、Σ')'を分析する必要があるため、関数の依存関係を 'R'に沿って格納する必要があることに注意してください。したがって、 'S'は一般的に次のようになります。' S = [(R_1、Σ_1); (R_2、Σ_2); ...; (R_n、Σ_n)} 'となる。 このように 'R '= X(R' -Y)'を更新することをお勧めします。 – Pengxer

1

1NF - > 2NF - > 3NF - > BCNF

与えられたFDによると、 "ACE" はキーを形成して設定します。 R(A、B、C、D、E)が2NFにないことは明らかです。 2NF分解はR1(A、B)、R2(C、D)及びR3(A、C、E)を与える。 この分解分解関係は3NFにあり、BCNFにもあります。

関連する問題