最小限のカバーを持っている場合:F'= {A-> F、A-> G、CF-> A、BG-> C)そして私は関係の候補キーを1つ特定しました、それはAであると言います。正確に私はしますか?
F'は最小限のカバーではありません。A->FとA->GをA->FGに組み合わせる必要があります
BはAのクロージャに属していないため、価値のあるAでさえF'が与えられた候補キーになることはできません。可能な候補キーはABです。
3NFの場合、F'の依存関係ごとにテーブルを作成することから始めます。
R1(A,F,G) R2(A,C,F) R3(B,C,G)
次に、テーブルの1つに候補キーが含まれているかどうかを確認します。Bは依存関係の左側にのみ表示されるため、Bは常に候補キーの一部である必要があります。Bのある唯一のテーブルはR3であり、候補キーは含まれていません(チェックしてください!)。したがって、候補キーを属性として持つ新しいテーブルR4を追加します。
R4(A,B)
最後に、あるテーブルの属性のセットが別のテーブルの属性のセットに含まれているかどうかを確認します。これは、実行中の例には当てはまりません。
したがって、3NF分解は次のようになります。
R1(A,F,G) R2(A,C,F) R3(B,C,G) R4(A,B)
BCNFの場合、R(A、B、C、F、G)から始めて、BCNF違反を探します。
たとえば、この依存関係は自明ではなく、Aはスーパーキーではないため、A->FGはBCNFの違反です。したがって、Rをに分割します
R1(A,F,G) and R2(A,B,C)
得られた関係にはBCNF違反が含まれていないため、プロセスはここで停止します。