SQLとデータベース正規化とは?基礎をやさしく解説

SQLとデータベース正規化とは?基礎をやさしく解説

SQLと正規化に悩むビジネスパーソンのイメージ
「SQLって、何をするための言語なの?」
「データベースの正規化って、なぜ必要?」
「第3正規形って、試験でよく出るけど難しい」

そんな疑問を抱える、基本情報技術者の学習を始めたあなたへ。

結論から言えば、
SQLはデータベースを操作する共通言語、正規化はデータの重複をなくして整理する設計手法です。

この記事では、SQL(データベースに対して検索・追加・更新・削除を行うための標準的な言語)と、データベース正規化(データの重複や矛盾をなくすために表を分割・整理する設計手法)の基礎を、初心者向けにやさしく解説します。SELECT/JOIN/GROUP BYの基本動作から、第1〜第3正規形までを段階的に押さえられる構成です。

 

1. SQLとは — データベース操作の共通言語

SQLでデータベースを操作するイメージ

あなたが業務システムでデータを扱う場面、その裏側ではほぼ SQL が動いています。

SQL(Structured Query Language)は、関係データベース(RDB)を操作するための標準言語です。ISO や JIS で標準化されており、主要な RDB 製品の多くが共通の構文で扱えます。

イメージとしては、Excel の行・列管理を整理整頓して、専用の命令文で出し入れできるようにした形と捉えると掴みやすいです。Excel が関数や手作業で集計するのに対し、SQL は宣言的な命令で「何が欲しいか」を書くだけで結果が返ってきます。

SQL でできる操作は大きく4つに分類されます。検索(SELECT)、追加(INSERT)、更新(UPDATE)、削除(DELETE)。この4つを覚えれば、基本的なデータ操作はカバーできます。
メタファー: Excel の整理整頓版
Excel が「1冊のノート」なら、RDB は「専用の書庫」。SQL はその書庫に対して「どの棚の、どの本の、どの行が欲しい」と命令する共通のことばです。

関連する基礎概念は データベースとは でも整理しています。

 

2. SELECT / JOIN / GROUP BY の基本

SELECT/JOIN/GROUP BYを学ぶイメージ

ここからは、SQL のなかでも特に出題頻度が高い3つの命令を紹介します。あなたが最初に押さえるべき土台となる部分です。

まず SELECT は、表からデータを取り出す命令です。次の1行で「顧客テーブルから名前と年齢を全件取り出す」という意味になります。

SELECT 名前, 年齢 FROM 顧客;

条件を絞りたいときは WHERE 句を足すのが一般的です。「年齢が30歳以上の人だけ」のように、必要な範囲だけを切り出せます。

次に JOIN は、複数の表を結合する命令です。顧客テーブルと注文テーブルを「顧客ID」でつなぐと、誰がどの商品を買ったかを1つの結果として取り出せます。

SELECT 顧客.名前, 注文.商品名 FROM 顧客 JOIN 注文 ON 顧客.ID = 注文.顧客ID;

正規化された複数の表を組み合わせて意味のある情報に戻すのが、JOIN の役割と呼ばれます。

最後に GROUP BY は、データをグループ化して集計する命令です。「商品ごとの注文件数」「部署ごとの平均給与」のような集計に使われます。

3つの命令の使い分けは「取り出す(SELECT)」「つなぐ(JOIN)」「まとめる(GROUP BY)」と覚えるとスッキリします。試験では、この3つを組み合わせた問題が頻出です。

 

3. 正規化の目的 — 住所録の冗長を削る

住所録の冗長を整理するイメージ

正規化が苦手なあなたも、目的さえ掴めば一気に理解が進みます。

データベースの 正規化 とは、表の構造を整理して、データの重複や矛盾をなくすための設計手法です。設計段階で行うのが一般的です。

イメージとしては、古い住所録を整理して、同じ会社名や同じ住所が何度も書かれている冗長を削る作業に近いと言えます。1人の引っ越しで何箇所も書き換える必要があると、書き漏れや矛盾が起きやすくなります。

正規化が必要な理由は、主に次の3つに整理されます。

  • データの重複によるディスク領域の無駄遣い
  • 同じ情報が複数箇所にあることで起きる矛盾
  • 更新時に一部だけ書き換わってしまう不整合のリスク
正規化のゴールは、1つの事実は1箇所にだけ書くという原則の実現です。これにより、更新・追加・削除のどれを行ってもデータの整合性が保ちやすくなります。

 

4. 第1〜第3正規形の違い

第1から第3正規形へ段階的に進むイメージ

正規化の理解で多くのあなたがつまずくのは、第1〜第3まで段階を踏むという点です。順に1つずつ整理しましょう。

第1正規形 は、1つのセルに複数の値が入っていない状態です。たとえば「電話番号」欄に「090-…, 03-…」と2つ書かれているなら、行を分けて1セル1値にするのが第1正規形と呼ばれます。

次の 第2正規形 は、第1を満たしたうえで、主キーの一部だけで決まる項目(部分関数従属)を別表に切り出した状態です。「注文ID + 商品ID」が主キーの注文明細表に「商品名」を持たせると、商品名は商品IDだけで決まるため、別表にすべきと判断されます。

そして 第3正規形 は、第2を満たしたうえで、主キー以外の項目から間接的に決まる項目(推移関数従属)を別表に切り出した状態です。社員表に「部署コード」と「部署名」を両方持たせると、部署名は部署コードに従属するので、部署マスタに切り出すのが第3正規形です。

試験では「この表は第何正規形か」「次の正規形にするにはどう分割するか」が問われやすい論点です。順番に「1セル1値 → 部分従属除去 → 推移従属除去」と機械的に当てはめて確認できれば十分対応できます。

 

5. まとめ: 今日からできる、最初の一歩

学習達成・次のステップへ進むイメージ

ここまで、SQL の基本第3正規形までの正規化を整理しました。

振り返ると、押さえどころは次の3つです。あなたの理解の地図として持ち帰ってください。

  1. SQL は SELECT / JOIN / GROUP BY が中心
  2. 正規化の目的は「1つの事実は1箇所」
  3. 第1(1セル1値)→ 第2(部分従属除去)→ 第3(推移従属除去)の順

これらは 基本情報技術者 科目A テクノロジ系 データベース領域 の中核テーマで、ほぼ毎回出題される領域です。

今日からできる、最初の一歩はとてもシンプルです。

  1. 身近な Excel 表を1つ取り出して「1セル1値」に整える(10分)
  2. 同じ表で「重複している列」を見つけ、別表に切り出す(10分)
  3. 基本情報の過去問1問を解いて第何正規形か判定する(10分)

たった30分で、あなたの SQL と正規化のイメージは確かな形に近づきます。最初の一歩を踏み出したあなたを応援しています。

次のステップとして、関連の解説と問題集にも目を通すと理解がさらに定着します。