本文へ移動

リレーショナルデータベースにおける第一正規形(1NF)

第一正規形(1NF)は、各テーブル列に原子的な値のみを格納し、繰り返しグループを含まないことを求める、構造化されたリレーショナルテーブルの基本要件である。

概要

第一正規形(通常は1NFと略される)は、リレーショナルデータベースにおける基本的な構造要件である。すべてのテーブルは、各列に分割不可能な値だけを含み、行内に繰り返しとなる列グループを持たないよう編成されなければならない。1NFは、テーブルの各セルには集合、リスト、入れ子のレコードではなく、単一の値を格納すべきであるという規則として説明されることが多い。この概念はリレーショナルモデルの基礎的な一部であり、さらなる正規化の前提条件でもある。

主な特性と規則

  • 原子的な値:各列の値は原子的であるべきである。すなわち、データベーススキーマおよびそれを利用するクエリの観点から分割不可能であることを意味する。
  • 繰り返しグループを含まないこと:同じ属性について複数の値を表すために、phone1、phone2、phone3などのように列を重複させてはならない。
  • 一貫したドメイン:1つの列のすべての項目は、同じデータドメイン、すなわち型、形式、意味に属するべきである。
  • 行の独立性:各行は1つのレコードを表す。複数の出現を記述する詳細は、各出現がそれぞれ独自の行または関連テーブルを占めるようにモデル化する。

例と1NFへの変換

よくある違反には、フィールドにカンマ区切りのリスト(たとえばタグとして「red,blue,green」)を格納することや、複数の値に対してphone1、phone2のような繰り返し列を使うことがある。このような設計を1NFに適合させるには、通常、次の方法をとる。

  1. 複数値を含むセルを、関連テーブルの個別の行へ分割する(1対多の関係)。
  2. 多対多の関係には中間テーブルを導入し、各テーブルセルを原子的に保つ。
  3. 繰り返し列を行、または外部キーを持つ別個のエンティティテーブルへ正規化する。

歴史と意義

1NFの考え方は、1960年代後半から1970年代初頭にかけてのE・F・コッドによるリレーショナルモデルの研究にさかのぼる。コッドは、関係代数と宣言的クエリが予測可能に機能するため、データ項目が原子的である明確な表形式の構造が必要であることを示した。正規化の第一段階として、1NFはテーブル設計に最低限の規律を与え、より高い正規形を可能にする。

実務上の考慮事項とよくある誤解

1NFを満たすことで、クエリとインデックス作成が容易になり、アプリケーションレベルでの解析処理の一部を減らせる。ただし、1NFだけで冗長性がなくなるわけでも、更新異常が起きないことが保証されるわけでもない。これらの問題は、より高い正規形(2NF、3NF、BCNFなど)が扱う。また、「原子的」の考え方は文脈に依存しうる。あるアプリケーションでは原子的な値が、別のアプリケーションでは複合的と見なされる場合がある。設計者は正規化と性能、実務上の要件の均衡を図るべきであり、読み取り負荷の高いワークロードでは、スキーマ設計における論理的な1NF構造を維持しつつ、非正規化を行うこともある。

重要な区別

  • 1NFは構造上の規則であり、キーや参照整合性についての規定ではない。テーブルは主キーが宣言されていなくても1NFでありうる。
  • より高い正規形は、属性間の依存関係に制約を加えることで1NFを基礎として構築される。原子的な値という要件に取って代わるものではない。

リレーショナル理論およびテーブル設計についてさらに読むには、リレーショナルモデルテーブルに関する解説からリンクされている資料を参照のこと。

関連項目

著者

AlegsaOnline.com リレーショナルデータベースにおける第一正規形(1NF)

URL: https://ja.alegsaonline.com/art/34581

共有