非正規形とは?初心者でもわかるデータベースの基本と例
生徒
「先生、データベースを勉強していたら『非正規形』という言葉が出てきました。これは何なんですか?」
先生
「良いところに気づいたね。非正規形(ヒセイキケイ)とは、データベースの正規化(セイキカ)を行う前の状態のことを指すんだよ。」
生徒
「正規化って聞いたことありますけど、なぜ非正規形というものが存在するんですか?」
先生
「データベース設計の最初は、必要な情報をとりあえず表に詰め込んでいくことが多いんだ。そのため、同じ情報が重複したり、データの更新や削除で矛盾が生じやすい。これが非正規形の状態なんだよ。」
生徒
「なるほど。つまり整理整頓される前のデータベースの形なんですね?」
先生
「その通り。では実際に非正規形の特徴を詳しく見ていこう。」
1. 非正規形(ヒセイキケイ)とは?
非正規形とは、データベースの表(テーブル)が正規化されていない状態のことをいいます。正規化(セイキカ)とは、データを効率よく整理して、重複や矛盾を防ぐための手法です。つまり非正規形は、情報がまだバラバラで、同じ内容が何度も出てきたり、整理整頓が不十分な状態です。
例えば、あるお店の注文管理を考えてみましょう。もし「注文番号」「顧客名」「商品一覧」をひとつの表にまとめてしまうと、商品が複数あるときに同じ顧客情報を何度も書き込む必要が出てきます。この状態が典型的な非正規形です。
2. 非正規形の特徴
- 同じ情報が繰り返し出てくる(データの重複)
- 商品リストや住所などがひとつの欄にまとまってしまい、分割できない(繰り返し属性)
- 情報を更新するときに整合性が崩れやすい(更新異常)
- 情報を削除すると必要なデータまで消えてしまう(削除異常)
- 新しい情報を追加しにくい(挿入異常)
こうした問題は、非正規形のままでは避けられません。そこで登場するのが正規化です。
3. 非正規形の例
以下のような表を考えてみましょう。
注文番号 | 顧客名 | 商品
001 | 佐藤 | りんご, バナナ, オレンジ
002 | 鈴木 | ぶどう
003 | 佐藤 | りんご, メロン
この表では「佐藤」という顧客名が繰り返し出てきています。また、商品がカンマ区切りで1つの欄に複数入っています。この状態はデータの重複や矛盾を引き起こすため、非正規形の典型例です。
4. 非正規形が問題になる理由
非正規形のままでは、データベースを長く使ううちに必ず問題が発生します。例えば、佐藤さんの名前を「佐藤太郎」に変更したいとき、複数の行をすべて更新しなければならず、もし1行だけ更新し忘れると矛盾が生じます。
また、ある注文から商品を削除すると、誤って顧客情報まで消えてしまう可能性があります。こうした更新異常や削除異常は、非正規形特有の問題です。
5. 正規化への第一歩
非正規形を解消するための最初のステップが「第一正規形(ダイイチセイキケイ)」です。これは、1つの欄に複数の値を入れず、1つのセルには1つの値だけを入れるというルールです。
先ほどの例を第一正規形にすると次のようになります。
注文番号 | 顧客名 | 商品
001 | 佐藤 | りんご
001 | 佐藤 | バナナ
001 | 佐藤 | オレンジ
002 | 鈴木 | ぶどう
003 | 佐藤 | りんご
003 | 佐藤 | メロン
これで1つの欄に複数の商品が入る問題は解決されました。このように非正規形を整理していくことで、データベースは矛盾が少なく扱いやすい形になっていきます。
6. 雑学:非正規形の歴史と由来
非正規形という言葉は、データベース理論が体系化される中で自然に生まれたものです。1970年代にエドガー・F・コッドという研究者がデータベースの正規化理論を提唱しました。それ以前は多くのデータが非正規形のまま使われており、データの整合性を保つのがとても大変でした。
つまり非正規形は「整理前の状態」であり、正規化は「データの片付け作業」といえます。初心者でも身近な例でイメージすると、散らかった部屋を片付ける前と後の違いだと思うとわかりやすいでしょう。