第五正規形は結合従属をキーから導ける形に分ける

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

射影と結合だけを使う正規化の終点としても扱い、射影結合正規形 (Project-Join Normal Form, PJ/NF) とも呼ぶ。

ETNF では、どの行も一部分だけでも全体でも余分にならない。それでも、結合従属が候補キーだけでは導けないことがある。第五正規形は、どの非自明な結合従属でも、射影先がすべて候補キーである状態である。言い換えると、結合従属は候補キーから導ける。

納品表の対応を3つの表へ移す

本質タプル正規形の納品表では、仕入先と部品が揃えば案件は1つに決まる。仕入先と部品、部品と案件、案件と仕入先のどの2列の組も事実なら、3列の組も必ず成り立つ。行を区別する候補キーは (仕入先, 部品) だけである。

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

結合従属の射影先のうち (仕入先, 部品) は候補キーだが、(部品, 案件) と (案件, 仕入先) は候補キーではない。この結合従属は候補キーだけでは導けない。この表は ETNF だが 5NF ではない。

仕入先と部品、部品と案件、案件と仕入先の対応を、それぞれ別の表へ移す。

仕入先部品の表では、仕入先 と 部品 の組で行が1つに決まる。

仕入先 部品
北商 ねじ
南商 ねじ
北商 座金

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

部品 案件
ねじ A工事
座金 A工事

案件仕入先の表では、案件 と 仕入先 の組で行が1つに決まる。

案件 仕入先
A工事 北商
A工事 南商

3つの表をつなぐと、分ける前の行に戻る。北商のねじは、案件が A工事になる。

第五正規形でも定義域だけの制約は残る

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

  1. 北商とねじの組を消すときは、仕入先部品の表の1行を消せばよい。案件の数だけ行を消す必要はない。
  2. まだ案件と結びついていない仕入先と部品の組も、仕入先部品の表へ追加できる。
  3. ある案件の行をすべて消しても、仕入先と部品の対応は仕入先部品の表に残る。

ここまでの表では、各表の候補キーは2列すべてである。非自明な結合従属の射影先は、いずれもその表の候補キーになる。結合従属は候補キーから導けるので、これらの表は 5NF である。

分けたあとも、列の取りうる値の範囲など、キーだけでは書けない条件が残ることがある。次の部品表は 5NF である。

部品 種別
ねじ 締結
座金 締結

行を区別する候補キーは 部品 だけである。関数従属も結合従属も、候補キーから導ける。それでも、種別が締結と緩衝のどちらかである、といった定義域の制約は、キーだけでは表せない。

この定義域とキー以外の制約は、ドメイン・キー正規形で扱う対象になる。第五正規形が整えるのは、射影と結合について、結合従属が候補キーから導けるところまでである。