第3正規形
① 物語性を取り入れた説明: 「第3正規形」
新入社員のケンジは、会社でデータベース管理を担当していましたが、複雑なデータが多く、管理がうまくいっていませんでした。顧客のデータと購入履歴が何度も繰り返されていたため、データベースが混乱していたのです。
「課長、このデータベースが非常に複雑で、どこを修正すればいいのかわかりません」とケンジは悩んでいました。
課長は微笑んで言いました。「それなら、第3正規形を考えてみるといいよ。第2正規形まではやったんだよね?」
「はい、第2正規形では、顧客情報と購入履歴を分けて整理しました。でも、まだデータが複雑に絡み合っています」とケンジは答えました。
「それなら次は、推移的従属を解消するんだ。たとえば、顧客の住所とその地域の郵便番号があるとしよう。顧客IDと住所は直接関係があるけど、住所と郵便番号も別の関係を持っている。このように、データが間接的に依存している場合、それを解消するのが第3正規形なんだよ」
「推移的従属ですか?」とケンジは首をかしげました。
課長は続けて説明します。「そうだ。例えば、顧客IDがあればその顧客がどこに住んでいるか、つまり住所が分かる。だから、顧客IDは住所に依存しているんだ。そして、その住所が分かれば、それに対応する郵便番号がわかるから、住所が郵便番号に依存しているということになる。つまり、顧客IDから住所、そしてさらに住所から郵便番号に依存している構造になっている。これが推移的従属だよ」
「なるほど、顧客IDが住所に依存していて、さらに住所が郵便番号に依存しているんですね」とケンジは理解しました。
「その通り!たとえば、次のようなテーブルがあるとしよう」
第2正規形の状態
顧客ID | 顧客名 | 住所 | 郵便番号 | 購入商品 | 購入日 |
---|---|---|---|---|---|
1 | 田中太郎 | 東京 | 123-4567 | ノートPC | 2023-09-01 |
2 | 鈴木花子 | 大阪 | 765-4321 | スマートフォン | 2023-09-10 |
「ここでは、住所と郵便番号の関係が推移的従属にあるよね。顧客IDが住所に依存していて、さらに住所が郵便番号に依存している。このような場合、第3正規形では、郵便番号を別のテーブルに分けることでこの依存関係を解消するんだ」
第3正規形の状態
顧客テーブル
顧客ID | 顧客名 | 住所 |
---|---|---|
1 | 田中太郎 | 東京 |
2 | 鈴木花子 | 大阪 |
郵便番号テーブル
住所 | 郵便番号 |
---|---|
東京 | 123-4567 |
大阪 | 765-4321 |
購入履歴テーブル
購入ID | 顧客ID | 購入商品 | 購入日 |
---|---|---|---|
101 | 1 | ノートPC | 2023-09-01 |
102 | 2 | スマートフォン | 2023-09-10 |
「これで、住所と郵便番号の間の推移的従属がなくなった。つまり、データの依存関係が明確になり、整理された状態になっているんだ」
「なるほど!これが第3正規形なんですね」とケンジは納得しました。
第3正規形 (Third Normal Form, 3NF) とは、データベース内の推移的従属を解消し、データの重複や矛盾を防ぐための整理手法です。これにより、データの一貫性が保たれ、効率的な管理が可能になります。
② 実際の事例: 第3正規形の使用例
第3正規形は、多くの企業や自治体で使われています。例えば、通販サイトでは、顧客情報、商品情報、配送情報を正規化して管理することが一般的です。顧客の名前、住所、郵便番号、購入履歴が混在していると、データが重複しやすく、ミスが発生する可能性があります。そこで、第3正規形に基づいて、顧客情報、郵便番号、購入履歴を分割することで、データの一貫性と正確さを保ちます。
また、自治体では、住民の情報や行政手続きのデータを整理するために第3正規形を活用しています。例えば、住民の名前、住所、税務情報などを別々のテーブルに分けることで、管理がしやすくなり、データの更新が迅速に行えるようになります。
最近では、クラウドサービスのデータベース管理でも、第3正規形が重要な役割を果たしています。クラウド上でデータが増加し続けるため、効率的なデータ管理が求められており、データの依存関係を整理することで、パフォーマンスの向上とデータの正確さが保たれています。
➂ クイズや小テスト
クイズ1
第3正規形の主な目的は何ですか?
A. 推移的従属を解消する
B. データを暗号化する
C. データベースのサイズを縮小する
クイズ2
第3正規形にするためには、どのような処理が必要ですか?
A. すべてのデータを1つのテーブルにまとめる
B. データを分割し、推移的従属を解消する
C. データを圧縮して保存する
クイズ3
推移的従属とは何ですか?
A. データが他のデータに直接依存すること
B. データが別のデータを介して間接的に依存すること
C. データが更新されたときに発生するエラー
⑤ 回答
- A – 第3正規形の目的は、推移的従属を解消し、データの一貫性を保つことです。
- B – 第3正規形では、データを分割して推移的従属を解消します。
- B – 推移的従属とは、データが他のデータを介して間接的に依存している状態です。