私はBCNF分解を実行する正しい手順を見つけようとしています。この例が見つかりましたが、正しい手順を実行する方法がわかりません。BCNF分解
スキーマ=(A、B、C、D、E、F、G、H) FDの+ {A - > CGH、AD-> C、D-E-> F、G-> G}
誰かが正しい手順を示すことができますか?
私はBCNF分解を実行する正しい手順を見つけようとしています。この例が見つかりましたが、正しい手順を実行する方法がわかりません。BCNF分解
スキーマ=(A、B、C、D、E、F、G、H) FDの+ {A - > CGH、AD-> C、D-E-> F、G-> G}
誰かが正しい手順を示すことができますか?
あなたのFDのを使用して、最小限のカバーを決定します。一人でA
はD
を意味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
AD - > Cについては、増補ルールが適用されます。しかし、2NFでは許可されていない部分的なキーの依存関係であるため、削除されたと考えています。 –
@Alex W良い点。 'A - > C'の場合は、拡張によって' AD - > CD'が真です。分解することによって、「AD→C」を導くことができる。しかし、「A→C」または「AD→C」の保存の選択は、与えられた一連のFDから最小カバーを構築するための規則によって決定される。 FDのLHSからの「D」の除去は、F +において「C」が決定されることを妨げるものではない。従って、「冗長性」がそれを落とすための実際の基礎である。 – NealB
R1(DEF)、R2(ACGH)、R3(ABDE)のような関係が分解されています。私はBがどのようにして候補キーになるのか分かりません。私は上記の関係の鍵としてABDEを得ました。 – Josh
にすべきですか? –
それは教科書にはありませんでしたが、もちろん答えられていませんでした。私は最終的に私を助けるために、より多くの例を見つけようとしています。 – Mike
宿題のように見えます。以下の[スライドショー](http://www.comp.nus.edu.sg/~lingtw/rm.pdf)をご覧ください。あなたがそれに従うならば、あなたは運動を完了することができるはずです。 – NealB