この単元のつまずきポイント

第2正規化と第3正規化の違いがあいまいで、「主キーの一部に従属」と「主キー以外に従属」の区別ができないつまずきが多く見られます。関数従属という抽象概念を具体表で見る訓練が不可欠です。

このテーマで実際に生成した教材

下の枠内が、まなびAIがこのテーマで実際に生成した教材です。読み解きにくい学習指導要領は、デジタル庁が推進する国産AI「源内」の一部である法令検索AI「Lawsy」の技術で検索・参照し、約30秒で出力されました。

皆さんが普段使っているWebサイトやアプリの裏側には、たくさんのデータが整理されて保存されています。このデータの整理術の一つが「データベースの正規化」です。正規化を行うことで、データの重複をなくし、効率的で信頼性の高いデータベースを作ることができます。

データベースの正規化とは?

正規化とは、データベースに格納されているデータの重複を排除し、データの整合性や一貫性を保つための設計手法です。これを行うことで、データの更新(追加・変更・削除)をより正確に行えるようになります。

正規化にはいくつかの段階がありますが、ここでは特に重要とされる「第1正規形」「第2正規形」「第3正規形」について、具体的な手順と見分け方を学びましょう。

正規化を行うメリット

  • データの重複を減らす: 同じデータを何度も入力する手間が省け、記憶領域も節約できます。
  • データの一貫性を保つ: 同じデータが複数箇所にあると、更新漏れなどで内容が食い違う可能性があります。重複をなくすことで、常に正しい状態を保ちやすくなります。
  • データの更新を容易にする: データの追加、変更、削除がシンプルになり、不整合が起こりにくくなります。

第1正規形(1NF)

概念

第1正規形とは、テーブルのすべての列が「原子的な値(これ以上分割できない単一の値)」を持つ状態のことです。また、繰り返し項目(一つのセルに複数の値が羅列されている状態)がないことも条件です。

見分け方

  • 1つのセルに複数の情報がカンマなどで区切られて入っていませんか?
  • 同じ種類の情報が複数の列(例: 電話番号1, 電話番号2)に分かれていませんか?

手順(1NFへの変換)

  1. 繰り返し項目を解消する: 1つのセルに複数の値が入っている場合は、その値をそれぞれ別の行に分割します。
  2. 原子化する: 各列がこれ以上分割できない最小単位の情報を持つようにします。

例で見てみよう

変換前(非正規形)の「生徒情報」テーブル

  • 生徒ID: S001
  • 生徒名: 山田太郎
  • 連絡先: 090-XXXX-YYYY
  • 履修科目と成績: 国語:80, 数学:75, 英語:90

このテーブルでは、「履修科目と成績」の列に複数の情報(科目名と成績)がまとめられており、さらに複数の科目情報がカンマで区切られています。これは第1正規形の要件を満たしていません。

1NFに変換した「生徒成績」テーブル

  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY, 科目名: 国語, 成績: 80
  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY, 科目名: 数学, 成績: 75
  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY, 科目名: 英語, 成績: 90
  • 生徒ID: S002, 生徒名: 佐藤花子, 連絡先: 080-AAAA-BBBB, 科目名: 数学, 成績: 95
  • 生徒ID: S002, 生徒名: 佐藤花子, 連絡先: 080-AAAA-BBBB, 科目名: 理科, 成績: 88

これで各セルが単一の値を持つようになりました。

第2正規形(2NF)

概念

第2正規形とは、第1正規形であることに加えて、主キー(テーブルの行を一意に識別する列または列の組み合わせ)が複合キー(複数の列を組み合わせて主キーとしている状態)の場合に、主キーの一部にだけ依存する非キー属性(主キーではない列)が存在しない状態のことです。つまり、すべての非キー属性は「主キー全体」に完全に機能的に依存している必要があります。

見分け方

  • 複合キーが設定されているテーブルですか?
  • 複合キーのうち、一部の列だけに依存する情報(他の列の値が決まる)が、非キー属性として存在しませんか?

手順(2NFへの変換)

  1. 部分関数従属を特定する: 複合主キーの一部にのみ依存する非キー属性を見つけ出します。
  2. 新しいテーブルに分割する: 特定した部分関数従属を持つ属性を、その依存元の主キーの一部を新しい主キーとする新しいテーブルに移動します。

例で見てみよう

先ほどの1NFの「生徒成績」テーブルの主キーは、「生徒ID」と「科目名」の複合キーだとします。このテーブルを見ると、「生徒名」や「連絡先」は「生徒ID」が決まれば一意に決まりますが、「科目名」には依存していません。これは「部分関数従属」にあたります。

2NFに変換したテーブル群

1. 「生徒」テーブル(新しく作成)

  • 主キー: 生徒ID
  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY
  • 生徒ID: S002, 生徒名: 佐藤花子, 連絡先: 080-AAAA-BBBB

2. 「生徒成績」テーブル(変更後)

  • 主キー: 生徒ID, 科目名(複合キー)
  • 生徒ID: S001, 科目名: 国語, 成績: 80
  • 生徒ID: S001, 科目名: 数学, 成績: 75
  • 生徒ID: S001, 科目名: 英語, 成績: 90
  • 生徒ID: S002, 科目名: 数学, 成績: 95
  • 生徒ID: S002, 科目名: 理科, 成績: 88

これで「生徒成績」テーブルの非キー属性「成績」は、主キー「生徒ID」と「科目名」の両方に完全に依存するようになりました。

第3正規形(3NF)

概念

第3正規形とは、第2正規形であることに加えて、非キー属性から非キー属性への推移的関数従属が存在しない状態のことです。つまり、主キーではない列が、別の主キーではない列に依存していない状態を指します。

見分け方

  • テーブル内に、主キーではない列Aが、別の主キーではない列Bに依存し、その列Bが主キーに依存している、という「連鎖的な依存関係」はありませんか?

手順(3NFへの変換)

  1. 推移的関数従属を特定する: 非キー属性が別の非キー属性に依存している関係を見つけ出します。
  2. 新しいテーブルに分割する: 特定した推移的関数従属を持つ属性を、その依存元の非キー属性を新しい主キーとする新しいテーブルに移動します。

例で見てみよう

先ほどの「生徒」テーブルに、「担当教師ID」「担当教師名」「教師の電話番号」という列を追加してみましょう。

2NFの「生徒」テーブル(3NF変換前)

  • 主キー: 生徒ID
  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY, 担当教師ID: T01, 担当教師名: 田中一郎, 教師の電話番号: 070-1111-2222
  • 生徒ID: S002, 生徒名: 佐藤花子, 連絡先: 080-AAAA-BBBB, 担当教師ID: T02, 担当教師名: 鈴木花子, 教師の電話番号: 070-3333-4444

このテーブルでは、「担当教師名」と「教師の電話番号」は「担当教師ID」が決まれば一意に決まります。そして「担当教師ID」は「生徒ID」によって決まるため、「生徒ID」 → 「担当教師ID」 → 「担当教師名」「教師の電話番号」という推移的な依存関係が発生しています。これは第3正規形の要件を満たしていません。

3NFに変換したテーブル群

1. 「生徒」テーブル(変更後)

  • 主キー: 生徒ID
  • 生徒ID: S001, 生徒名: 山田太郎, 連絡先: 090-XXXX-YYYY, 担当教師ID: T01
  • 生徒ID: S002, 生徒名: 佐藤花子, 連絡先: 080-AAAA-BBBB, 担当教師ID: T02

2. 「教師」テーブル(新しく作成)

  • 主キー: 担当教師ID
  • 担当教師ID: T01, 担当教師名: 田中一郎, 教師の電話番号: 070-1111-2222
  • 担当教師ID: T02, 担当教師名: 鈴木花子, 教師の電話番号: 070-3333-4444

これで「生徒」テーブルには推移的関数従属がなくなり、第3正規形を満たしました。

まとめ

データベースの正規化は、データの品質を高め、効率的な管理を実現するための重要なステップです。

  • 第1正規形: 各セルを原子化し、繰り返し項目をなくす。
  • 第2正規形: 複合キーの場合、主キーの一部にのみ依存する属性を別のテーブルに分離する。
  • 第3正規形: 非キー属性から非キー属性への推移的依存をなくすために、関連する属性を別のテーブルに分離する。

これらの手順を順に適用していくことで、より堅牢で使いやすいデータベースを設計できるようになります。ぜひ、ご自身で簡単なデータを使って正規化の練習をしてみてください。

形式: 解説 参照: high_school > 情報 > 解説

編集・参照情報

  • 編集・運営: かわさき楽AIサポート(株式会社スマイルファクトリー)
  • 作成方法: 学習指導要領データを検索し、AI生成教材を編集して掲載
  • 参照範囲: high_school > 情報 > 解説
  • 公開日: 2026年7月20日

この教材の使い方

保護者の方は、まずお子さんと一緒に部活動の名簿や定期テストの成績表を眺めてみてください。同じ生徒の名前や連絡先が何度も書かれている箇所を指差して「ここが重複だね」と確認するだけで、正規化の必要性が体感として伝わります。

塾講師の方は、第1〜第3正規形をいきなり定義から教えず、生徒に「1つのマスに複数の値が入っている列はどれ?」と問いかけるところから始めると効果的です。本教材の見分け方チェックをそのまま口頭確認に使えば、手を動かす前に判断基準が定着します。

学習後は、生徒本人に身近な表を1つ選んで1NF→2NF→3NFへ書き直させてみてください。手順通りに分割できたか、重複が実際に減ったかを一緒に振り返ることで、「なぜ段階的に進めるのか」という設計思想まで理解が深まります。

同じテーマで、お子さま専用の教材を作れます

このページの教材は一例です。質問を変えれば、つまずいているポイントに合わせた教材が生成できます。

この続きをまなびAIで作る

よくある質問

データベースの正規化は、高校2年の情報の授業で必ず学ぶ内容ですか?

「情報」の科目でデータ管理の基礎として扱われることが多い単元ですが、扱いの深さは学校や教科書で差があります。定期テストの範囲に入るかは、学校の先生にご確認ください。

子どもが「第2正規形と第3正規形の違い」でつまずいています。どう声をかければよいですか?

正規形は第1→第2→第3と順に進める考え方なので、まずは第1正規形の「1つのセルに複数の値を入れない」を身近な例で確認するのがおすすめです。理解の順序はご家庭の判断で調整してみてください。

家庭学習で正規化を復習するとき、何から取り組ませるとよいですか?

教材本文にある「見分け方」のチェック項目から始め、身近な表を第1正規形に整える練習が入り口として取り組みやすいです。第2・第3への進み方は、学校の進度に合わせてご家庭の判断で選んでください。