第3正規形とは

だいさんせいきけい

第2正規形であり、しかも主キー以外の列を経由して決まる列(推移的関数従属)がない表の状態。例えば 社員番号 → 部署コード → 部署名 のような従属があれば、部署の表を分けることで第3正規形になる。

「第3正規形」は、1分野の2問の練習問題に出てきます(データベースの基礎など)。

この用語の分野: データベースの基礎

第3正規形の練習問題に挑戦

受注表(受注番号, 商品番号, 数量, 顧客番号, 顧客名)の主キーは{受注番号, 商品番号}で、関数従属は {受注番号, 商品番号} → 数量、受注番号 → 顧客番号、顧客番号 → 顧客名 である。この表を第3正規形まで正規化した結果として正しいものはどれか。

  1. A受注明細(受注番号, 商品番号, 数量, 顧客番号)、顧客(顧客番号, 顧客名)
  2. B受注明細(受注番号, 商品番号, 数量)、受注(受注番号, 顧客番号)、顧客(顧客番号, 顧客名)
  3. C受注明細(受注番号, 商品番号, 数量)、受注(受注番号, 顧客番号, 顧客名)
答えと解説を見る

正解:B. 受注明細(受注番号, 商品番号, 数量)、受注(受注番号, 顧客番号)、顧客(顧客番号, 顧客名)

第2正規形は、第1正規形で、しかも主キーの一部だけに従属する列(部分関数従属)がない状態です。受注番号 → 顧客番号 は、主キーの一部である受注番号だけで顧客番号が決まる部分関数従属なので、元の表は第1正規形ですが第2正規形ではありません。受注番号で決まる列を受注(受注番号, 顧客番号, 顧客名)として分けると、第2正規形になります。第3正規形は、第2正規形で、しかも主キー以外の列を経由して決まる列(推移的関数従属)がない状態です。受注表には 受注番号 → 顧客番号 → 顧客名 という推移的関数従属が残っているので、顧客(顧客番号, 顧客名)をさらに分けます。こうして、受注明細(受注番号, 商品番号, 数量)、受注(受注番号, 顧客番号)、顧客(顧客番号, 顧客名)の3つの表が第3正規形になります。分けた表は、受注番号や顧客番号で結合すれば元の表に戻せます。

解説の中の「第3正規形」

「第3正規形」が出てくる問題(2問)

  1. 受注表(受注番号, 商品番号, 数量, 顧客番号, 顧客名)の主キーは{受注番号, 商品番号}で、関数従属は {受注番号, 商品番号} → 数量、受注番号 → 顧客番号、顧客番号 → 顧客名 である。この表を第3正規形まで正規化した結果として正しいものはどれか。
  2. 社員表(社員番号, 氏名, 部署コード, 部署名)の主キーは社員番号で、どの列も1つの値だけを持つ。関数従属は 社員番号 → 氏名、社員番号 → 部署コード、部署コード → 部署名 である。この表の正規形として正しいものはどれか。

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

主キー 正規化 外部キー ACID特性 E-R図 インデックス SQL 関係データベース トランザクション 2相ロック

用語集の一覧へ