2016-05-01 11 views
0

私は3NFで自分のデータベースを作ろうとしていますが、私は混乱しています。以下の説明では、ジップが複数回発生する可能性がある場合、Zipがアドレステーブルのプライマリキーになる方法を理解していません。 Student_Detailテーブルでは再構築ジップは問題ありませんが、主キーは一意ではありませんか?第3正規形一意性制約

第3正規形(3NF)

第3正規形は、テーブルのすべての非プライム属性が主キーに依存しなければならないことに適用される、または我々は非プライムケースがあってはならない、と言うことができます属性は別の非プライム属性によって決定されます。したがって、この推移的な関数の依存関係はテーブルから削除する必要があり、テーブルはSecond Normal形式でなければなりません。たとえば、次のフィールドを持つテーブルを考えてみましょう。

Student_Detail表は:

STUDENT_ID - Student_name - DOB - ストリート - 都市 - 国家は - この表で

ジップSTUDENT_IDは主キーですが、通り、都市や州は、郵便番号に依存します。 zipと他のフィールドとの間の依存性は、推移的依存性と呼ばれます。したがって、3NFを適用するには、ストリート、市および州を新しいテーブルに移動し、Zipを主キーとして移動する必要があります。

新Student_Detail表:

STUDENT_ID - Student_name - DOB - ジップ

アドレステーブル:

ジップ - ストリート - 都市 - 国家

transtive依存性を除去する利点は、

です

データの複製量が減少します。 データの整合性が達成されました。

例: http://www.studytonight.com/dbms/database-normalization.php

+0

これは、指定された郵便番号に都市、通り、州が1つあると仮定しています。実際には郵便番号については真実ではありません。しかし、その仮定の下でさえ、 "ジップと他のフィールドとの間の依存性は推移的依存性と呼ばれています"という言い方が間違っており、その3NFの特性も同様です。これは貧しい資源です。大学/大学の教科書/プレゼンテーション/コースを探す。多くはオンラインです。 – philipxy

答えて

1

私は私はジッパーが複数回発生する可能性があればZipは、アドレステーブルの主キーすることができますどのように理解していない、これはあなたの質問

であると仮定しています。

あなたが理解できない理由は、Zipが悪い例であるからです。

すべての説明は正しいです。他の「非プライム」属性に「非プライム」属性ベースを推論できる場合は、「推移的依存性」と呼ばれるものがあります。それらを別のテーブルに引っ張り、その場所にFK参照を挿入します。

Zipはその属性がPKで複数回表示されません。説明は正しいが、それは単なる悪い例であると私は信じている。異なる主題でそれを分析しようとする。

this例が何らかの形で役立つかどうかを確認してください。

+0

大丈夫です。したがって、上の例でそれを行う適切な方法は、Student_DetailテーブルにAddress_ID外部キーを作成し、次にzipテーブルのaddress_id主キーを作成してそこから実行することです。ありがとう。あなたが私に送った例は、エドも助けます。 – Christopher

+0

これはまさにそのアイデアです!お役に立てて嬉しいです。 –

+0

@Christopher&PedroGabriel正規化では、新しい列名を導入する必要はなく、異なる表の同じ列名を再利用するだけです。 – philipxy

関連する問題