本質タプル正規形は結合で生じる余分な行を除く

関係データベースの正規化で、第四正規形の次に置く段階が本質タプル正規形 (Essential Tuple Normal Form, ETNF) である。

4NF では、多値従属について、決める側が候補キーである。それでも、結合従属により、他の行と制約だけで同じ行が言えてしまうことがある。ETNF は、どの行も、一部分だけでも全体でも余分にならない状態である。

構文的には、ボイス・コッド正規形であり、かつ明示したどの結合従属でも、射影先のどれか1つが候補キーを含む状態である。

取次表の対応を3つの表へ移す

第四正規形の取次表では、担当とメーカー、メーカーと部品、担当と部品のどの2列の組も事実なら、3列の組も必ず成り立つ。行を区別する候補キーは (担当, メーカー, 部品) だけである。

担当 メーカー 部品
山田 東工 ねじ
山田 西工 座金
鈴木 東工 座金
山田 東工 座金

山田と東工、東工と座金、山田と座金の組は、いずれも上の3行に現れる。結合従属により、山田・東工・座金の行は、その3行と制約だけで言える。候補キーは3列すべてなので、結合従属のどの射影先も候補キーを含まない。この表は 4NF だが ETNF ではない。

担当とメーカー、メーカーと部品、担当と部品の対応を、それぞれ別の表へ移す。

担当メーカーの表では、担当 と メーカー の組で行が1つに決まる。

担当 メーカー
山田 東工
山田 西工
鈴木 東工

メーカー部品の表では、メーカー と 部品 の組で行が1つに決まる。

メーカー 部品
東工 ねじ
西工 座金
東工 座金

担当部品の表では、担当 と 部品 の組で行が1つに決まる。

担当 部品
山田 ねじ
山田 座金
鈴木 座金

3つの表をつなぐと、分ける前の行に戻る。山田・東工・座金は、3つの2列表の組から復元できる。

本質タプル正規形でも結合従属は残る

表を分けると、値の直し方と追加の仕方が単純になる。

  1. 山田と東工の取次を消すときは、担当メーカーの表の1行を消せばよい。部品の数だけ行を消す必要はない。
  2. まだ部品と結びついていない担当とメーカーの組も、担当メーカーの表へ追加できる。
  3. ある部品の行をすべて消しても、担当とメーカーの対応は担当メーカーの表に残る。

ここまでの表では、結合従属の射影先に候補キーを含むものはない。それでも、射影先の1つが候補キーを含めば、行全体が余分になることはない。次の納品表は ETNF である。

仕入先 部品 案件
北商 ねじ A工事
南商 ねじ B工事
北商 座金 B工事

仕入先と部品が揃えば案件は1つに決まる。行を区別する候補キーは (仕入先, 部品) だけである。仕入先と部品、部品と案件、案件と仕入先のどの2列の組も事実なら、3列の組もこの表になければならない。結合従属の射影先のうち (仕入先, 部品) は候補キーなので、この表は ETNF である。一方、この結合従属は候補キーだけでは導けないので、第五正規形ではない。

北商のねじは A工事だけである。仕入先と部品が同じ行が2つあると、関数従属に反する。結合従属があっても、候補キーを含む射影先があるので、他の行だけで同じ行全体が言えてしまうことはない。

この結合従属を候補キーだけから導けるようにするのは、第五正規形で分ける対象になる。本質タプル正規形が整えるのは、行が一部分でも全体でも余分にならないところまでである。