次の関係を3NFに分解しようとしています。
A -> BCD
BC -> DE
C -> D
D -> A
そこで、標準的なカバーを取得するために冗長性を排除しました。
A -> BC
B -> E
C -> D
D -> A
そして今、私はこれを3NFに分解しようとしています。
に分解する必要がありr1(A, B, C) r2(B, D), r3(C, D)ます。それでは私は何をしD -> Aますか?
私を失望させているという事実A -> B -> D -> A。
次の関係を3NFに分解しようとしています。
A -> BCD
BC -> DE
C -> D
D -> A
そこで、標準的なカバーを取得するために冗長性を排除しました。
A -> BC
B -> E
C -> D
D -> A
そして今、私はこれを3NFに分解しようとしています。
に分解する必要がありr1(A, B, C) r2(B, D), r3(C, D)ます。それでは私は何をしD -> Aますか?
私を失望させているという事実A -> B -> D -> A。
与えられた
A -> BCD
BC -> DE
C -> D
D -> A
正規のカバーを取得するには、最初にBC->DEからDを削除します。
A -> BC
BC -> E
C -> D
D -> A
次に、C-> D、D-> A、A-> BCを観察し、B-> Eがわかっている場合は、C->Eもわかっています。したがって、
A -> BC
B -> E
C -> D
D -> A
3NF分解は次のように機能します。
1)正規カバーの依存関係ごとにテーブルを作成します
R1(A,B,C) R2(B,E) R3(C,D) R4(A,D)
2)Rの候補キーを決定します。手順1のテーブルに候補キーが含まれていない場合は、候補キーの属性のみを含む新しいテーブルを追加します。
ここで、Aは候補キーであり、R1(およびR4)に含まれているため、新しいテーブルを追加しないでください。
3)属性が別のテーブルの属性のサブセットであるようなテーブルがある場合は、「含まれている」テーブルを削除します。
これは適用されないため、3NF分解は変更されません。
ご覧のとおり、循環依存関係は問題ありません。