logo

第 3 正規形 (3NF)

  • リレーションが 2NF にあり、推移的な部分依存関係が含まれていない場合、リレーションは 3NF になります。
  • 3NF はデータの重複を減らすために使用されます。データの整合性を確保するためにも使用されます。
  • 非素数属性に推移的な依存関係がない場合、関係は第 3 正規形でなければなりません。

自明でない関数の依存関係 X → Y ごとに次の条件の少なくとも 1 つを保持する場合、関係は第 3 正規形になります。

  1. Xはスーパーキーです。
  2. Y はプライム属性です。つまり、Y の各要素は何らかの候補キーの一部です。
  3. 例:

    キャッチアンドトライJava

    EMPLOYEE_DETAIL テーブル:

    EMP_ID EMP_NAME EMP_ZIP EMP_STATE EMP_CITY
    222 ハリー 201010 ノイダ
    333 ステファン 02228 私たち ボストン
    444 そして 60007 私たち シカゴ
    555 キャサリン 06389 イギリス ノリッジ
    666 ジョン 462007 MP ボパール

    上の表のスーパーキー:

     {EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on 

    候補キー: {EMP_ID}

    非プライム属性: 指定されたテーブルでは、EMP_ID を除くすべての属性が非素数です。

    マドゥバラ

    ここで、EMP_STATE と EMP_CITY は EMP_ZIP に依存し、EMP_ZIP は EMP_ID に依存します。非プライム属性 (EMP_STATE、EMP_CITY) はスーパー キー (EMP_ID) に推移的に依存します。これは第 3 正規形の規則に違反します。

    そのため、EMP_ZIP を主キーとして、EMP_CITY と EMP_STATE を新しいテーブルに移動する必要があります。

    従業員テーブル:

    EMP_ID EMP_NAME EMP_ZIP
    222 ハリー 201010
    333 ステファン 02228
    444 そして 60007
    555 キャサリン 06389
    666 ジョン 462007

    EMPLOYEE_ZIP テーブル:

    EMP_ZIP EMP_STATE EMP_CITY
    201010 ノイダ
    02228 私たち ボストン
    60007 私たち シカゴ
    06389 イギリス ノリッチ
    462007 MP ボパール