第一正規形はセルを単一の値にする

関係データベースの正規化で、非正規形の次に置く段階が第一正規形 (First Normal Form, 1NF) である。1NF の関係は、各属性がドメイン上の単一の値だけを持ち、繰返しグループを含まない。行は候補キーで一意に識別できる。

Codd の定式化では、属性の値は原子的であり、関係やリストそのものを値にしない。どこまでを原子的とみなすかはドメインの切り方による。住所を都道府県と市区町村に分けるかどうかは、その分解で問い合わせるかで決まる。1NF が除くのは、同じ種類の事実が1行の中に複数並ぶことである。

繰返しを行の方向へ展開する

非正規形の注文表では、商品コード商品名数量 が1セルに複数入っていた。明細を1行1件に展開すると、各セルは単一の値になる。

注文ID 顧客名 商品コード 商品名 数量
1 山田 A01 りんご 2
1 山田 A02 みかん 1
2 佐藤 A01 りんご 3

注文ID だけでは行を区別できない。候補キーは注文と明細を組にした (注文ID, 商品コード) になる。1つの注文に同じ商品コードが複数ありうるなら、明細番号を足して (注文ID, 明細番号) を候補キーにする。

第一正規形でも従属の重複は残る

1NF にすると、「商品コードが A02 の明細」をセル内の分割なしに検索できる。明細の追加と削除は行の追加と削除に一致する。

それでも次の重複は残る。

  1. 顧客名注文ID だけで決まる。明細の数だけ同じ名前が繰り返される。
  2. 商品名商品コード だけで決まる。同じ商品が別注文に現れるたびに繰り返される。

顧客名を改めるときは、その注文の明細行をすべて更新する。候補キーの一部にだけ依存するこの関係は部分関数従属と呼ばれ、第二正規形で切り離す対象になる。1NF は値を原子的にし、1行が1つの明細事実を表すところまでを整える。