第 5 正規形(5NF)— 結合従属を排除する
3 分割でのみ情報が保てる結合従属を扱う、最終段階の第 5 正規形。
5NF とは
第 5 正規形(5NF、別名 PJ/NF: Project-Join Normal Form)は、4NF までで取り切れない結合従属(join dependency)を解消する正規形です。具体的には、あるテーブルが「3 つ以上の小さいテーブルに分割すると情報を失わずに分解でき、かつ 2 つには分割できない」場合に、その 3 分割を行います。
典型例 — 業者・部品・プロジェクトの 3 項関係
「ある業者がある部品をあるプロジェクト向けに供給している」という関係 supply (supplier, part, project) を考えます。このテーブルを 2 テーブルに分割すると情報が失われる(ある業者が扱える部品と、ある業者が関わるプロジェクトだけでは、「実際にどの組み合わせで供給したか」が復元できない)ケースがあります。
一方、3 つのペア表 (supplier, part) / (part, project) / (supplier, project) に分割すると、結合で元の関係を情報を失わずに復元できる場合があります。この性質が「結合従属」で、5NF はこれを検出して分割します。
実務ではほぼ理論上の存在
5NF まで踏み込む場面は実務ではほとんどありません。3 項の組み合わせ関係は多くの場合、代理キー付きの中間表 supplies (id, supplier_id, part_id, project_id) として管理され、個別の制約(UNIQUE、CHECK、アプリ側ルール)で整合を保つ設計が主流です。
ただし、3 つ以上の独立した参加関係を 1 テーブルに押し込んでいないかをチェックする観点としては有効です。「この 3 項関係、2 項の組み合わせに分解できるのでは?」と疑えること自体が、5NF の実務的な価値と言えます。
次に読む
各正規形のまとめと、「正規化しすぎは禁物」という実務上の判断軸は 正規化とは — 概要ページに戻って確認してください。非正規化の判断基準も同ページにまとまっています。
