2011-11-21 38 views
0

私はスキーマの3NF分解とBCNF分解を生成しようとしています。私はアルゴリズムを見てきましたが、これを行う方法は非常に混乱しています。第3正規形とBCNF分解の生成方法

私が最小限のカバーを持っていれば:F' = {A->F, A->G, CF->A, BG->C)と言って、関係の候補キーを1つ特定しました。それはAです。では、私は正確に何をしますか?私は例を見てきた

、次がある1:

F = {A → AB,A → AC,A → B,A → C,B → BC} 

最小カバー:F′ = {A → B,B → C}

そして、最終的な結果は次の通りであった:(AB,A → B), (BC,B → C)。彼らはどうやってこれに着いたのですか?

答えて

1

私は最小限のカバーを持っていると言う場合:F」= {A-> F、A-> G、CF-> A、BG-> C)と私は関係の1つの候補キーを同定した 、それがAだと言うと、 私は正確に何をしますか?

F 'は、最小限のカバーではありません:あなたはA-> FとA-> GへのA-> FG

AはF与えられた候補キーできなくても価値が

結合する必要がありB' がないために可能な候補キーはABです。あなたはFでの依存関係の各1」のためのテーブルの作成を開始し3NFについては

、すなわち、

R1(A,F,G) R2(A,C,F) R3(B,C,G) 

次はテーブルのいずれかが、候補キーが含まれているかどうか確認してください。 Bは依存関係の左側にのみ現れるため、Bは常に候補キーの一部でなければなりません。 Bを持つ唯一のテーブルはR3であり、候補キーは含まれていません(チェックしてください!)。

R4(A,B) 

を属性としてそこで、私たちは候補キーを持つ新しいテーブルR4を追加最後に、我々は、テーブルのいずれかの属性のセットを別のテーブルの属性の集合に含まれているかどうかを確認してください。実行中の例ではそうではありません。したがって

、当社3NF分解では、R(A、B、C、F、G)で始まり、BCNF違反を探しBCNFについては

R1(A,F,G) R2(A,C,F) R3(B,C,G) R4(A,B) 

です。

たとえば、A-> FGはBCNFの違反です。この依存関係は自明ではなく、Aはスーパーキーではないためです。したがって、我々はRを分割した。

得られた関係にはBCNF違反が含まれていないので、プロセスはここで停止する。