Skip to the content.

まず結論

正規化とは、関係データベースでデータの重複を減らし、更新時の不整合を防ぐために、表を適切に分ける考え方です。

SG試験では、正規化を「データを暗号化すること」や「データを圧縮すること」と混同しないことが大切です。

正規化で見るのは、主に次の点です。

  • 同じデータが何度も出ていないか
  • 1つのセルに複数の値が入っていないか
  • 主キーと関係のない項目が混ざっていないか
  • 更新・追加・削除のときに不整合が起きないか

つまり、正規化はデータをきれいに分けて管理しやすくする設計です。


直感的な説明

正規化は、ぐちゃっとした一覧表を、役割ごとに分ける作業と考えると分かりやすいです。

例えば、注文一覧に次の情報が全部入っているとします。

  • 注文ID
  • 顧客名
  • 顧客住所
  • 商品名
  • 商品価格
  • 注文日

この形だと、同じ顧客が何度も注文した場合、顧客名や住所が何度も出てきます。

もし顧客住所が変わったら、すべての注文行を修正しなければなりません。

修正漏れがあると、同じ顧客なのに住所が複数あるように見えてしまいます。

そこで、

  • 顧客表
  • 商品表
  • 注文表
  • 注文明細表

のように分けて、重複を減らします。

これが正規化のイメージです。


定義・仕組み

正規化では、表を段階的に整理します。

SG試験では、まず第1正規形、第2正規形、第3正規形の大まかな違いを押さえておくと安心です。

段階 整理すること 判断ポイント
第1正規形 繰り返し項目をなくす 1つのセルに複数値を入れない
第2正規形 主キーの一部だけに依存する項目を分ける 複合キーの一部だけで決まる項目を分ける
第3正規形 主キー以外に依存する項目を分ける 主キー以外で決まる項目を分ける

細かい理論を深追いするより、試験では何に依存している項目かを見ることが大切です。


第1正規形とは

第1正規形は、繰り返し項目や複数値をなくす段階です。

例えば、1つのセルに次のような値が入っている状態は扱いにくいです。

注文ID 商品名
O001 りんご、みかん、バナナ

このように1つの項目に複数の商品が入っていると、検索や集計がしにくくなります。

第1正規形では、1つのセルには1つの値が入るように整理します。

注文ID 商品名
O001 りんご
O001 みかん
O001 バナナ

まずは、1項目1値にするイメージです。


第2正規形とは

第2正規形は、複合キーの一部だけで決まる項目を別の表に分ける段階です。

例えば、注文明細表で、主キーが「注文ID」と「商品ID」の組み合わせだとします。

注文ID 商品ID 商品名 数量
O001 P001 りんご 3
O001 P002 みかん 2

このとき、数量は「注文ID」と「商品ID」の組み合わせで決まります。

しかし、商品名は「商品ID」だけで決まります。

つまり、商品名は複合キー全体ではなく、一部である商品IDだけに依存しています。

この場合、商品名は商品表に分けた方がよいです。

商品ID 商品名
P001 りんご
P002 みかん

第2正規形では、主キーの一部だけで決まる項目を分けると考えると分かりやすいです。


第3正規形とは

第3正規形は、主キー以外の項目に依存する項目を分ける段階です。

例えば、注文表に次の項目があるとします。

注文ID 顧客ID 顧客名 注文日
O001 C001 山田さん 2026-04-01
O002 C001 山田さん 2026-04-02

この表の主キーは注文IDです。

しかし、顧客名は注文IDで決まるというより、顧客IDで決まります。

つまり、主キーではない顧客IDに依存しています。

この場合、顧客名は顧客表に分けます。

顧客ID 顧客名
C001 山田さん

第3正規形では、主キー以外で決まる項目を分けると押さえるとよいです。


どんな場面で使う?

正規化は、関係データベースを設計するときに使われます。

特に、次のような目的があります。

  • データの重複を減らす
  • 更新時の不整合を防ぐ
  • 追加・削除時の不都合を防ぐ
  • データを管理しやすくする
  • 主キー・外部キーによる関係を整理する

例えば、顧客住所を注文表に毎回保存していると、住所変更のたびに多くの行を修正する必要があります。

正規化して顧客表に住所をまとめておけば、顧客表の1か所を直すだけで済みます。


正規化で防ぎたい不都合

正規化では、次のような不都合を減らすことを考えます。

不都合 内容
更新時の不整合 同じ情報を複数箇所で直す必要がある 住所変更の修正漏れ
追加時の不都合 必要な情報だけを登録できない 商品だけを先に登録できない
削除時の不都合 消したくない情報まで消える 最後の注文を消すと顧客情報も消える

SG試験では、正規化の目的として、重複排除と整合性の確保が狙われやすいです。


よくある誤解・混同

誤解1:正規化はデータを暗号化すること

正規化は暗号化ではありません。

暗号化は、第三者に内容を読まれにくくするための技術です。

正規化は、データベースの表を整理して、重複や不整合を減らすための設計です。


誤解2:正規化すれば必ず処理が速くなる

正規化すると、データの重複は減ります。

ただし、表が分かれるため、検索時に表を結合する必要が増えることがあります。

そのため、正規化は必ず処理速度を上げるものではありません。

処理性能を重視して、あえて一部の重複を許す設計をすることもあります。

これを非正規化といいます。


誤解3:正規化は表を1つにまとめること

正規化は、表を1つにまとめることではありません。

むしろ、重複や依存関係を整理するために、表を適切に分けることが多いです。

「まとめる」よりも「役割ごとに分ける」と考えると分かりやすいです。


ER図・主キー・外部キーとの関係

正規化は、ER図や主キー・外部キーとつながっています。

用語 正規化との関係
ER図 エンティティ同士の関係を整理する
主キー 表の1行を一意に識別する
外部キー 分けた表同士を関係づける
正規化 重複や不整合を減らすように表を分ける

正規化で表を分けたあと、それらの表を主キー・外部キーでつなぎます。

その関係を整理するために、ER図が役立ちます。


まとめ(試験直前用)

正規化は、データの重複を減らし、更新時の不整合を防ぐために表を整理する考え方です。

試験直前は、次の3点で判断しましょう。

  • 第1正規形=繰り返し項目をなくす
  • 第2正規形=主キーの一部だけで決まる項目を分ける
  • 第3正規形=主キー以外で決まる項目を分ける

迷ったときは、

正規化=重複を減らすために、表を役割ごとに分ける

と押さえると、選択肢を切り分けやすくなります。