2010-12-06 19 views
10

私はBCNF分解を実行する正しい手順を見つけようとしています。この例が見つかりましたが、正しい手順を実行する方法がわかりません。BCNF分解

スキーマ=(A、B、C、D、E、F、G、H) FDの+ {A - > CGH、AD-> C、D-E-> F、G-> G}

誰かが正しい手順を示すことができますか?

+0

にすべきですか? –

+0

それは教科書にはありませんでしたが、もちろん答えられていませんでした。私は最終的に私を助けるために、より多くの例を見つけようとしています。 – Mike

+0

宿題のように見えます。以下の[スライドショー](http://www.comp.nus.edu.sg/~lingtw/rm.pdf)をご覧ください。あなたがそれに従うならば、あなたは運動を完了することができるはずです。 – NealB

答えて

11

あなたのFDのを使用して、最小限のカバーを決定します。一人でADを意味Cを決定するので

{A -> C, A -> G, A -> H, 
B -> nothing, 
C -> nothing, 
D -> nothing, 
E -> nothing, 
F -> nothing 
G -> nothing 
H -> nothing 
DE -> F} 

AD -> Cは脱落(アームストロングの公理を参照してください - 補強を)FDで冗長です。

3NFとBCNFの定義は、compund鍵に関する依存関係に関連しています。唯一の複合キー はDEです。 DまたはEは他の非ヌルFDの に属していません。したがって、推移的な依存関係を排除し、従属属性が の「キー、キー全体、およびキー以外のもの」に依存することはここでは問題になりません。 FD左側がキーと右辺 になるような関係に

ブレークは、そのキーの非キー依存属性されています

[Key(A), C, G, H] 
[Key(D, E), F] 

は今何でも、カバーからこれらの属性を排除しますスタンドアローンの関係です。

[Key(B)] 

これは、あなたの宿題にこの例を見つけるか3NF/BCNF

+0

AD - > Cについては、増補ルールが適用されます。しかし、2NFでは許可されていない部分的なキーの依存関係であるため、削除されたと考えています。 –

+1

@Alex W良い点。 'A - > C'の場合は、拡張によって' AD - > CD'が真です。分解することによって、「AD→C」を導くことができる。しかし、「A→C」または「AD→C」の保存の選択は​​、与えられた一連のFDから最小カバーを構築するための規則によって決定される。 FDのLHSからの「D」の除去は、F +において「C」が決定されることを妨げるものではない。従って、「冗長性」がそれを落とすための実際の基礎である。 – NealB

+0

R1(DEF)、R2(ACGH)、R3(ABDE)のような関係が分解されています。私はBがどのようにして候補キーになるのか分かりません。私は上記の関係の鍵としてABDEを得ました。 – Josh