「正規化って何?」
応用情報技術者試験のデータベース分野で超頻出ですが、
- なぜ分ける?
- どこまで分解する?
- 第1正規形?第2?第3?
で初学者がかなり混乱しやすいテーマです。
この記事では、
- 正規化とは?
- なぜ必要?
- 第1〜第3正規形
- 試験での頻出ポイント
を5分で理解できるように解説します!
まず結論
正規化とは?
「データの重複や矛盾を減らすために表を整理すること」
です!
なぜ必要?
例えば:
| 学生ID | 名前 | 科目 | 教員 |
|---|---|---|---|
| 1 | 田中 | DB | 佐藤 |
| 1 | 田中 | NW | 鈴木 |
| 2 | 鈴木 | DB | 佐藤 |
問題
同じデータが何度も出る!
- 田中
- DB
- 佐藤
などが重複。
重複すると?
更新ミスが起こる!
例えば:
「佐藤先生 → 高橋先生」
に変更するとき…
一部だけ変更すると?
| 科目 | 教員 |
|---|---|
| DB | 高橋 |
| DB | 佐藤 |
みたいな矛盾が発生!
そこで正規化
データを整理して重複を減らす!
本棚で理解しよう
かなり分かりやすい👇
整理前
全部1冊に詰め込む。
↓
情報が重複してぐちゃぐちゃ。
正規化後
- 学生表
- 科目表
- 履修表
に分ける!
正規化の基本
「1つの表に詰め込みすぎない」
これが大事。
第1正規形
超頻出!
条件
「繰り返し項目をなくす」
NG例
| 学生 | 科目 |
|---|---|
| 田中 | DB, NW |
OK例
| 学生 | 科目 |
|---|---|
| 田中 | DB |
| 田中 | NW |
ポイント
1セル1データ
第2正規形
条件
「部分関数従属をなくす」
難しそうだけど簡単!
イメージ
「主キーの一部だけで決まる項目を分離」
例
| 学生ID | 科目ID | 学生名 |
|---|---|---|
| 1 | DB | 田中 |
問題
学生名は:
学生IDだけで決まる
だから分離!
- 学生表
- 履修表
へ分ける。
第3正規形
条件
「推移的関数従属をなくす」
例
| 社員ID | 部署ID | 部署名 |
問題
部署名は:
部署IDで決まる
つまり:
社員ID → 部署ID → 部署名
になっている。
だから分離!
- 社員表
- 部署表
へ分ける。
正規化のメリット
データ重複削減
更新異常防止
データ整合性向上
デメリット
表が増える
JOINが必要になる。
JOINとは?
複数表を結合するSQL
ここも超頻出。
応用情報で超頻出
かなり狙われる👇
- 第1正規形
- 第2正規形
- 第3正規形
- 関数従属
- 主キー
- JOIN
よくあるひっかけ
「正規化すると検索が速くなる」
→ 必ずではない!
JOIN増加で遅くなることもある。
1分で復習!
正規化
表を整理すること
第1正規形
繰り返し排除
第2正規形
部分関数従属排除
第3正規形
推移的関数従属排除
練習問題
問題
第1正規形の説明として最も適切なものはどれか。
ア
推移的関数従属を排除する
イ
繰り返し項目を排除する
ウ
主キーを削除する
エ
表を結合する
解答
正解:イ
解説
第1正規形では、1セルに複数値を持たせず、繰り返し項目を排除します。
まとめ
正規化とは
「データ整理」
超重要
- 第1正規形
- 第2正規形
- 第3正規形
- 関数従属
まずは、
「重複を減らすために表を分ける」
このイメージを持つとかなり理解しやすくなります!
知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

未経験から、ITエンジニアへ。
「IT業界に興味はあるけれど、自分にできるか不安」「何から始めればいいのか分からない」そんな方のために、Tech GO は未経験からのIT転職を専門的にサポートします。求人を紹介するだけではなく、あなたの強みを整理し、応募準備から入社後の成…
まずは無料でキャリア相談

コメント