0

次の関係を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

4

1 に答える 1

1

与えられた

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分解は変更されません。

ご覧のとおり、循環依存関係は問題ありません。

于 2012-04-08T18:45:28.383 に答える