📌 結論から理解する
正規化=「データの矛盾が起きないテーブル設計にすること」
正規化(Normalization)とは、テーブルの設計を段階的に改善し、データの更新・挿入・削除で矛盾が起きないようにする手順です。
「冗長なデータを減らし、関係を明確にする」とも言えます。
非正規化テーブルの問題:3つの更新異常
📋 非正規化テーブル(問題あり)
| 注文ID | 顧客ID | 顧客名 | 顧客住所 | 商品名 | 単価 |
|---|---|---|---|---|---|
| 2001 | C001 | 田中太郎 | 東京都 | PC | 89,800 |
| 2002 | C001 | 田中太郎 | 東京都 | マウス | 3,200 |
| 2003 | C002 | 鈴木花子 | 大阪府 | PC | 89,800 |
①更新異常:田中太郎の住所が変わったら2行を更新。1行見落とすとデータ矛盾が発生。
②挿入異常:注文のない新規顧客を登録できない(注文IDがNULLになるが主キーはNULL不可)。
③削除異常:注文2003を削除すると鈴木花子の情報も消える。
正規化の段階
非正規形(繰り返しグループあり)
↓ 繰り返しグループを排除
第1正規形(1NF)
↓ 部分関数従属を排除
第2正規形(2NF)
↓ 推移関数従属を排除
第3正規形(3NF)
↓ すべての関数従属が候補キーからのみ
ボイスコッド正規形(BCNF)
試験では通常3NFまでが出題の中心。BCNFは稀に出る。
試験での出方
「このテーブルは何正規形か」「第2正規形にするには何をするか」という問題が多い。更新異常・挿入異常・削除異常の3つは正規化の動機として頻出。
🧠 確認クイズ
Q1. 正規化の主な目的はどれか?
Q2. 非正規化テーブルで「レコードを削除すると他の重要な情報も失われる」問題を何というか?
Q3. 正規化の段階として正しい順序はどれか?