正規化とは?わかりやすく解説
同じデータを何度も持たず、更新ミスを防ぐ整理方法を学びます。
最初に考えてみよう
同じ住所や商品名をいろいろな場所に何度も書いていると、変更があったときにすべて更新しなければならず、更新漏れが起きる可能性もあります。どうすれば防げるでしょうか?
解説
ぐちゃぐちゃの元データ
1枚の注文伝票をそのまま表にしたもの。1つの注文の中に商品が複数行ぶら下がり、マスがきれいな格子になっていない状態。
行の数が注文ごとにバラバラで、コンピュータで扱いにくい。
注文伝票(非正規形)
| 注文 番号主キー | 注文日 | 顧客 番号 | 顧客名 | 商品 番号 | 商品名 | 単価 | 数量 |
|---|---|---|---|---|---|---|---|
| 1001 | 6/21 | C01 | 田中商店 | P10P20 | りんごみかん | 10080 | 510 |
| 1002 | 6/22 | C02 | 鈴木屋 | P10 | りんご | 100 | 3 |
試す:りんごを値上げ
3行で覚える正規形
- 第1正規形:繰り返し項目をなくし、1マス1値にする。
- 第2正規形:複合主キーの「一部」で決まる項目を別表に分ける(部分関数従属の排除)。
- 第3正規形:主キー以外で決まる項目を別表に分ける(推移的関数従属の排除)。
試験のポイント
ITパスポート試験での問われ方
データの重複削減や更新時の不整合防止として問われる
間違えやすいポイント
- 正規化は暗号化の一種だと思う
- 表を分けるほど必ず速くなると考える
関連用語
正規化、主キー、外部キー、冗長性
図解の内容を文章で読む
正規化をイメージでつかむ
正規化は、データの重複や矛盾が起きにくいようにテーブルを整理する考え方です。同じ住所や商品名をあちこちに書くと、変更時に直し忘れが起きます。表を分けて、キーでつなぐと管理しやすくなります。
たとえると:クラス名簿と成績表を分け、学生番号でつなぐイメージです。名前変更があっても名簿だけ直せば済みます。
正規化は、1つの大きな表にすべてを書き込むのをやめ、重複が起きないように表を分けて整理する設計の考え方です。たとえば注文の表に顧客の住所を毎回書いていると、引っ越しのたびに何十行も直す必要があり、直し忘れると「同じ人なのに住所が2種類ある」という矛盾(不整合)が生まれます。顧客の情報は顧客表に1回だけ書き、注文表からは顧客番号(キー)で参照すれば、直すのは1か所で済みます。正規化の目的は「重複をなくして、更新時の矛盾を防ぐ」ことであり、暗号化のようなセキュリティ技術ではありません。また、表を分けるほど検索が速くなるとも限らない点に注意しましょう。試験では「正規化の目的はどれか」=データの重複を排除し不整合を防ぐ、が定番です。
押さえどころ
- 重複を減らす
- 矛盾を防ぐ
- キーで表をつなぐ
確認問題(4問)
確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。
「正規化」の過去問(3問)
IPAが公開しているITパスポート試験の公開問題から、このテーマの問題を集めました。
あわせて覚える英略語
つながるテーマ
学習を記録して、合格まで続ける
教材と確認問題はこのページで全部無料で使えます。登録すると「正規化」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。