第1正規形 (ダイイチセイキケイ) とは | 意味や読み方など丁寧でわかりやすい用語解説
第1正規形 (ダイイチセイキケイ) の読み方
日本語表記
第1正規形 (ダイイチセイキケイ)
英語表記
First Normal Form (ファーストノーマルフォーム)
第1正規形 (ダイイチセイキケイ) の意味や用語解説
データベースを設計する際に重要な概念の一つに「正規化」がある。正規化とは、データの重複を排除し、データの整合性を保ち、効率的な管理を実現するための手法であり、複数の段階に分かれている。その最初のステップが「第1正規形」である。第1正規形は、リレーショナルデータベースにおけるテーブル構造の最も基本的な要件を定義するもので、データベースの健全性を保つための土台となる。 第1正規形を満たすテーブルとは、すべての列(属性)の値が「アトミック」であり、繰り返し項目が存在しない状態のテーブルを指す。アトミックとは、それ以上分解できない最小単位の情報を意味する。言い換えれば、一つのセルには一つの情報だけが含まれ、複数の情報が混ざっていたり、繰り返しのデータが同じセル内に詰め込まれていたりしない状態である。これにより、データの検索、更新、削除といった操作を正確かつ効率的に行えるようになる。 具体的に第1正規形が要求する条件を詳しく見ていこう。まず、「アトミックな値を持つ」という要件について。例えば、ある顧客の氏名を格納する列があったとする。もしその列に「山田 太郎」のように姓と名がスペースで区切られて格納されていた場合、これはアトミックではない。なぜなら、「姓」と「名」はそれぞれ独立した情報として扱うことができ、場合によっては「姓」だけで検索したり、「名」だけでソートしたりしたいことがあるからだ。このような場合、第1正規形を満たすためには、「姓」と「名」をそれぞれ別の列として「姓」列と「名」列に分割する必要がある。同様に、住所を格納する列に「東京都千代田区1-2-3」とすべてが入っている場合もアトミックではない。これを「都道府県」「市区町村」「番地」などの独立した列に分割することで、特定の地域のみを抽出したり、郵便番号と連携させたりといった柔軟なデータ操作が可能になる。もしアトミックでない値が格納されていると、特定の情報を抽出する際に文字列解析を行う必要があり、検索効率が低下したり、正確な結果が得られなかったりする可能性がある。 次に、「繰り返し項目の排除」という要件について説明する。これは、一つのテーブルの行内で、同じ種類の情報が複数回現れることを避けるという考え方だ。例えば、ある顧客が複数の電話番号を持っている場合を考える。もし、テーブルに「電話番号1」「電話番号2」「電話番号3」といった列を設けていたとすると、これが繰り返し項目にあたる。顧客によっては電話番号を一つしか持たない場合もあれば、四つ以上持っている場合もあるかもしれない。このような設計では、もし四つ目の電話番号を持つ顧客が現れたら、テーブルに新しい列(電話番号4)を追加する必要が生じる。これはデータベースの構造を変更することになり、非常に手間がかかる。また、電話番号が少ない顧客の行には多くの空欄(NULL値)が発生し、ストレージの無駄にもなる。 第1正規形では、このような繰り返し項目を排除するために、関連するデータを別々の行として表現するか、別のテーブルに分離することを推奨する。上記の電話番号の例で言えば、顧客テーブルとは別に「顧客電話番号」テーブルを作成し、各電話番号を独立した行として格納する方法が一般的だ。例えば、顧客IDと電話番号を組み合わせたテーブルを作り、ある顧客の電話番号が複数ある場合は、その顧客IDに対応する行を複数持つようにする。 例として、注文情報を管理するテーブルを考える。非正規化された状態では、次のようなテーブル構造になっているかもしれない。 注文ID | 顧客名 | 注文日付 | 商品名1 | 数量1 | 商品名2 | 数量2 ---------------------------------------------------------------------- 1001 | 山田太郎 | 2023-01-01 | りんご | 2 | みかん | 3 1002 | 佐藤花子 | 2023-01-05 | バナナ | 1 | (NULL) | (NULL) このテーブルでは、「商品名1」「数量1」「商品名2」「数量2」が繰り返し項目にあたる。もし商品が3つになったら「商品名3」「数量3」といった列を追加する必要があり、商品が多い注文では管理が煩雑になる。また、特定の商品の売上を集計しようとしても、複数の列に分散しているため非常に困難だ。 これを第1正規形に変換すると、次のようになる。 注文ID | 顧客名 | 注文日付 | 商品名 | 数量 ------------------------------------------------------ 1001 | 山田太郎 | 2023-01-01 | りんご | 2 1001 | 山田太郎 | 2023-01-01 | みかん | 3 1002 | 佐藤花子 | 2023-01-05 | バナナ | 1 このように、一つの注文に含まれる各商品をそれぞれ独立した行として表現する。これにより、商品の追加や削除が容易になり、特定の商品の検索や集計も「商品名」列に対して行うだけで済むため、非常に効率的になる。各行は「注文ID」と「商品名」の組み合わせによって一意に識別できる状態となり、この組み合わせがテーブルの「主キー」として機能する。主キーとは、テーブル内の各行を一意に特定するための列または列の組み合わせのことである。第1正規形を満たすことで、このような主キーの定義が可能になり、データの整合性を保ちやすくなるというメリットもある。 第1正規形は、データベース設計の最初の、そして最も基礎的なステップである。この要件を満たすことで、データの重複が抑制され、更新や削除の際の異常(更新異常、削除異常)をある程度防ぐことができ、データの整合性が向上する。また、データベースへのアクセスや操作がSQLなどの標準的なクエリ言語で行いやすくなり、システムの開発やメンテナンスが効率的に進められるようになる。システムエンジニアとしてデータベースを扱う上で、第1正規形の概念をしっかりと理解し、適切に適用することは非常に重要となる。