正規化とは?わかりやすく解説

テクノロジ系 ・ 技術要素(データベース) ・ 読む目安8分 ・ 頻出

同じデータを何度も持たず、更新ミスを防ぐ整理方法を学びます。

最初に考えてみよう

同じ住所や商品名をいろいろな場所に何度も書いていると、変更があったときにすべて更新しなければならず、更新漏れが起きる可能性もあります。どうすれば防げるでしょうか?

解説

正規化とは、1つの表に詰め込んだデータを、重複やムダのない複数の表に分けていく整理作業。 目的はデータの重複をなくし、更新時の矛盾(更新異常)を防ぐこと。下のボタンで段階を進めてみよう。

ぐちゃぐちゃの元データ

これは何?

1枚の注文伝票をそのまま表にしたもの。1つの注文の中に商品が複数行ぶら下がり、マスがきれいな格子になっていない状態。

何が困る?

行の数が注文ごとにバラバラで、コンピュータで扱いにくい。

注文伝票(非正規形)

注文
番号
主キー
注文日顧客
番号
顧客名商品
番号
商品名単価数量
10016/21C01田中商店P10P20りんごみかん10080510
10026/22C02鈴木屋P10りんご1003

試す:りんごを値上げ

主キー 行を1つに決める項目 繰り返し項目(1マスに複数の値)

3行で覚える正規形

  • 第1正規形:繰り返し項目をなくし、1マス1値にする。
  • 第2正規形:複合主キーの「一部」で決まる項目を別表に分ける(部分関数従属の排除)。
  • 第3正規形:主キー以外で決まる項目を別表に分ける(推移的関数従属の排除)。

試験のポイント

ITパスポート試験での問われ方

データの重複削減や更新時の不整合防止として問われる

間違えやすいポイント

  • 正規化は暗号化の一種だと思う
  • 表を分けるほど必ず速くなると考える

関連用語

正規化、主キー、外部キー、冗長性

図解の内容を文章で読む

正規化をイメージでつかむ

正規化は、データの重複や矛盾が起きにくいようにテーブルを整理する考え方です。同じ住所や商品名をあちこちに書くと、変更時に直し忘れが起きます。表を分けて、キーでつなぐと管理しやすくなります。

たとえると:クラス名簿と成績表を分け、学生番号でつなぐイメージです。名前変更があっても名簿だけ直せば済みます。

正規化は、1つの大きな表にすべてを書き込むのをやめ、重複が起きないように表を分けて整理する設計の考え方です。たとえば注文の表に顧客の住所を毎回書いていると、引っ越しのたびに何十行も直す必要があり、直し忘れると「同じ人なのに住所が2種類ある」という矛盾(不整合)が生まれます。顧客の情報は顧客表に1回だけ書き、注文表からは顧客番号(キー)で参照すれば、直すのは1か所で済みます。正規化の目的は「重複をなくして、更新時の矛盾を防ぐ」ことであり、暗号化のようなセキュリティ技術ではありません。また、表を分けるほど検索が速くなるとも限らない点に注意しましょう。試験では「正規化の目的はどれか」=データの重複を排除し不整合を防ぐ、が定番です。

押さえどころ

  • 重複を減らす
  • 矛盾を防ぐ
  • キーで表をつなぐ

確認問題(4問)

確認問題を読み込んでいます...

確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。

「正規化」の過去問(3問)

IPAが公開しているITパスポート試験の公開問題から、このテーマの問題を集めました。

あわせて覚える英略語

つながるテーマ

この解説をXでシェア

学習を記録して、合格まで続ける

教材と確認問題はこのページで全部無料で使えます。登録すると「正規化」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。