⏱ 8分 ★★★★★ 頻出:高

第3正規形

推移関数従属を見つけて分離する。2NFとの違いを完全理解

第3正規形=「推移関数従属を除去する」

2NFを満たしつつ、主キー以外の属性が別の非キー属性を決定する(推移従属)関係を分離することで第3正規形(3NF)になります。

「キー以外がキー以外を決めるのはNG」と覚えると分かりやすい。

3NF変換の図解

❌ 2NF(推移関数従属あり)
社員ID🔑氏名部門コード部門名部門長
E001田中D01営業部山田部長
E002鈴木D01営業部山田部長
E003佐藤D02開発部中村部長
社員ID → 部門コード → 部門名
社員ID → 部門コード → 部長名
↑ 推移関数従属!
↓ 推移従属を分離して3NFへ
✅ 3NF:部門情報を別テーブルへ
社員テーブル
社員ID🔑氏名部門コード🔗
E001田中D01
E002鈴木D01
E003佐藤D02
部門テーブル(分離)
部門コード🔑部門名部長名
D01営業部山田部長
D02開発部中村部長

2NFと3NFの違いを整理

正規形除去する従属条件
2NF部分関数従属複合PKの一部→非キー属性を除去
3NF推移関数従属非キー属性→非キー属性の連鎖を除去
試験では「このテーブルが3NFでない理由を述べよ」という記述問題が出る。「○○は主キーではなく部門コードに関数従属しているため推移関数従属が存在する」と答えられるようにする。
🧠 確認クイズ
Q1. 第3正規形(3NF)になっていない状態を説明したものはどれか?
Q2. "社員ID→部門コード→部門名" の関係を3NFで解消するには?
Q3. 単一主キーで部分関数従属のないテーブルが3NFでない可能性があるのはどのような場合か?