カテゴリ: 基本情報技術者試験 更新日: 2025/10/03

第2正規形とは?初心者でもわかるデータベース設計の基礎と例

第2正規形
第2正規形

先生と生徒の会話形式で理解しよう

生徒

「先生、第1正規形は1つのセルに1つの値だけを入れるルールでしたよね。じゃあ『第2正規形』って何ですか?」

先生

「第2正規形(ダイニセイキケイ)は、第1正規形を満たしたうえで、さらに『部分関数従属(ブブンカンスウジュウゾク)』をなくすことが目的なんだよ。」

生徒

「部分関数従属ってちょっと難しそうですね…。簡単に言うとどういうことですか?」

先生

「簡単に言うと、複合キー(フクゴウキー)の一部だけで決まるデータをなくすことなんだ。つまり『キーの一部分に依存しているデータ』を別の表に分けることが第2正規形なんだよ。」

生徒

「なるほど!つまり、もっと整理して無駄をなくす感じなんですね。」

先生

「その通り。では第2正規形の具体例を見ていこう。」

1. 第2正規形(ダイニセイキケイ)とは?

1. 第2正規形(ダイニセイキケイ)とは?
1. 第2正規形(ダイニセイキケイ)とは?

第2正規形とは、第1正規形を満たしたうえで「複合キーの一部に依存するデータを排除した状態」のことをいいます。ここでいう複合キーとは、複数の列(カラム)を組み合わせて1つのレコードを特定するキーのことです。

もし複合キーを使っている表で、キーの一部だけで決まるデータがある場合、それは部分関数従属と呼ばれます。第2正規形では、この部分関数従属を取り除いて、表を分割します。

2. 部分関数従属(ブブンカンスウジュウゾク)とは?

2. 部分関数従属(ブブンカンスウジュウゾク)とは?
2. 部分関数従属(ブブンカンスウジュウゾク)とは?

部分関数従属とは、複合キーの一部にだけ依存している状態のことです。たとえば「注文番号」と「商品番号」の2つで1行を特定できる表があるとします。このとき、顧客名が「注文番号」だけで決まってしまうなら、それは部分関数従属です。

つまり、本来は2つのキーを組み合わせてレコードを特定するはずなのに、片方だけで決まるデータが存在してしまう状態です。これを放置するとデータの重複や更新の手間が増えてしまいます。

3. 非正規形から第1正規形、第2正規形への流れ

3. 非正規形から第1正規形、第2正規形への流れ
3. 非正規形から第1正規形、第2正規形への流れ

例として、次のような表を考えてみましょう。

注文番号 | 商品番号 | 顧客名 | 商品名 | 商品価格
001     | A01     | 佐藤   | りんご | 100
001     | A02     | 佐藤   | バナナ | 120
002     | A01     | 鈴木   | りんご | 100

この表はすでに第1正規形を満たしていますが、顧客名は「注文番号」だけで決まり、商品名や商品価格は「商品番号」だけで決まります。つまり、部分関数従属が発生している状態です。

これを第2正規形に変換すると、次のように表を分けます。

注文表
注文番号 | 顧客名
001     | 佐藤
002     | 鈴木

商品表
商品番号 | 商品名 | 商品価格
A01     | りんご | 100
A02     | バナナ | 120

注文詳細表
注文番号 | 商品番号
001     | A01
001     | A02
002     | A01

このように分けることで、顧客名は注文表に、商品情報は商品表にまとめられ、無駄な重複がなくなります。

4. 第2正規形のメリット

4. 第2正規形のメリット
4. 第2正規形のメリット

第2正規形にすることで、次のようなメリットがあります。

  • 顧客名や商品情報の重複がなくなる
  • データを更新するときの手間が減る
  • 削除や追加のときに矛盾が起きにくい
  • データがより整理されて管理しやすくなる

例えば「りんごの価格を120円に変更する」とき、商品表だけを修正すれば済みます。もし第2正規形にしていなければ、複数の行を探してすべて修正する必要があり、大変です。

5. 第2正規形とデータベース設計の雑学

5. 第2正規形とデータベース設計の雑学
5. 第2正規形とデータベース設計の雑学

第2正規形は、1970年代にエドガー・F・コッドによって提唱された正規化理論の一部です。第1正規形でデータを細かく分けたあと、さらに重複や無駄を減らすために生まれました。

初心者が第2正規形を理解すると、「第3正規形(ダイサンセイキケイ)」など、さらに進んだ正規化の考え方も理解しやすくなります。データベース設計を学ぶうえで必ず通るステップといえるでしょう。

カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
クライアントサーバシステムとは?初心者でもわかるネットワークの基本構成をやさしく解説
New2
基本情報技術者試験
分散処理とは?初心者でもわかるコンピュータの処理方式をやさしく解説
New3
情報セキュリティマネジメント試験
ブラックリストとは何かをやさしく解説!初心者でもわかる仕組みと活用例
New4
基本情報技術者試験
集中処理とは?初心者でもわかるコンピュータ処理方式の基本用語をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
FTP
220
FTPとは?初心者でもわかるファイル転送プロトコルの基本と仕組みを徹底解説!
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
212
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
URL
187
URLとは?初心者でもわかるWebリンクの仕組みと役割をやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
スキーマ(Schema)とは?データベースの基本構造を初心者向けに解説
No.8
Java&Spring記事人気No8
基本情報技術者試験
ハブとは?初心者でもわかるネットワーク接続装置の基本と仕組み