第3正規形とは?初心者でもわかるデータベース設計の基本とメリット
生徒
「先生、第2正規形までは理解できたんですが、第3正規形ってどういうものなんですか?」
先生
「第3正規形(ダイサンセイキケイ)は、第2正規形を満たしたうえで『推移的関数従属(スイイテキカンスウジュウゾク)』をなくすことが目的なんだよ。」
生徒
「推移的関数従属って難しそうですね…。簡単にいうとどういうことなんですか?」
先生
「簡単にいうと『キー以外の列が、別のキー以外の列に依存してしまう状態』をなくすことなんだ。つまり、余計な間接的なつながりを整理するのが第3正規形なんだよ。」
生徒
「なるほど!つまりさらに無駄をなくして、データをシンプルにするってことなんですね。」
先生
「その通り。それじゃあ具体例を見て理解していこう。」
1. 第3正規形(ダイサンセイキケイ)とは?
第3正規形とは、第2正規形を満たしたデータベースにおいて「主キー(シュキー)以外の列が、他の非キー列に依存していない状態」のことを指します。つまり、データの間に無駄な依存関係がなく、すっきり整理された状態です。
これによって、データの重複や更新異常、削除異常をさらに減らすことができます。データベース設計を学ぶ上で、第3正規形はとても大切な基礎です。
2. 推移的関数従属(スイイテキカンスウジュウゾク)とは?
推移的関数従属とは、主キーを通さなくても「ある列が別の列に依存している状態」のことです。例えば「社員ID」から「部署ID」がわかり、「部署ID」から「部署名」がわかる場合、「部署名」は間接的に「社員ID」に依存していることになります。
このような間接的な依存があると、部署名を変更する際に複数のレコードを修正する必要が出てきて、ミスや矛盾の原因になります。これを解消するのが第3正規形の目的です。
3. 第2正規形から第3正規形への変換例
次のような第2正規形の表を考えてみましょう。
社員ID | 社員名 | 部署ID | 部署名
001 | 佐藤 | D01 | 営業
002 | 鈴木 | D01 | 営業
003 | 田中 | D02 | 開発
この表では「部署名」が「部署ID」に依存しています。つまり「社員ID」から「部署ID」が分かり、「部署ID」から「部署名」が分かるため、推移的関数従属が存在しています。
これを第3正規形に直すと次のようになります。
社員表
社員ID | 社員名 | 部署ID
001 | 佐藤 | D01
002 | 鈴木 | D01
003 | 田中 | D02
部署表
部署ID | 部署名
D01 | 営業
D02 | 開発
こうすることで「部署名」は部署表で一元管理され、無駄な重複や矛盾がなくなります。
4. 第3正規形のメリット
第3正規形にすることで次のようなメリットがあります。
- データの重複を減らすことができる
- 更新の手間を最小限にできる
- 削除や追加時に不整合が起こりにくい
- データベース全体の整合性を保ちやすい
例えば「営業部」を「マーケティング部」に変更する場合でも、部署表の1行を修正するだけで済むようになります。
5. 第3正規形とデータベース設計の雑学
第3正規形の考え方は、1970年代に登場したリレーショナルデータベース(リレーショナルデータベース)の正規化理論の一部です。提唱したのはエドガー・F・コッドという研究者で、現在のデータベース設計の基本を築いた人物です。
第3正規形を理解すると、さらに進んだボイスコッド正規形(ボイスコッドセイキケイ)などの発展的な考え方につなげることができます。初心者にとって第3正規形は「整理されたデータベースの完成形に近い姿」と覚えると理解しやすいでしょう。