-1

I有し第3正規形は混乱

R ABは、主キー 及びF = {F 1である(ABCDE):AB-> CDE。 f2:BD-> E}

私の教科書は3番目の正規形に達したと言いましたが、オンラインツールで確認したところ、f2違反のため2番目の形式になっていたと私は混乱しています。

どちらが正しいですか?

+0

私はリレーショナルデータベースを(実際には)理解していますが、(ある程度は)通常のフォームを理解していますが、あなたの質問を提示した方法を理解していません。もっときれいになれますか? 'R(ABCDE)'はどういう意味ですか?列ABCDEの「テーブルR」? 'F = {f1:AB-> CDE; f2:BD-> E} 'はどういう意味ですか? (2つのフィールドを持つA 'テーブル' F ...そうではありません、私はあきらめます。私は推測もできません。)さらに、それを確認するのに "オンラインツール"は何を使用しましたか? – Phrogz

+2

@Phrogz:R(ABCDE)のテーマのバリエーションを属性A..Eとの関係Rとすることはかなり一般的です.Fはかなり明確にタグ付き関数の依存関係のセットです。依存関係 'f1'は、' AB'が主キーであることを繰り返す。依存関係 'f2'はあらゆる問題を引き起こします。 –

+0

@JonathanLefflerありがとうございました。 'f2'は' E'の値が 'B'と' D'の両方に依存すると言っていますか? (そしてその逆もありません) – Phrogz

答えて

1

Coddの3NFの定義には、テーブルのすべての非プライム属性が,のキーに非推移的に依存するという規定が含まれています。

つまり、Eは(AB)と(BD)の両方に依存するが、Cは(AB)にのみ依存するため、これは3NF違反です。

オンラインツールが正しいです。

この3NFを作成するには、ABCDとBDEの2つの関係に分割する必要があります。しかし、これは参照整合性強制に関連する問題を提起する。

+1

あなたの正当性は意味をなさない。 Eは(AB)と(BD)の両方に依存するが、Cは(AB)にのみ依存するため、「明白な接続はない」という表のすべての非プライム属性はすべてのキーに非過渡的に依存する"読者がABが唯一のCKであり、Eが非プライムであることはそれほど悪くはないが、ABの過渡的依存性については何も言わず、Cは無関係であることを理解することを期待する。そして、関係に1つ以上のCKがあるかのように、すべての*をイタリック体で表しますが、そうではありません。 – philipxy