関係の正規化
つまり、決定項に「余分な属性」がない場合が完全従属である。
候補キーでなく、かつ、候補キーの一部でもないような属性を「非キー属性」という。候補キーに部分従属する非キー属性は、それらが表す事象の発生・消滅・変化の点において、その他の属性と直接の関連がないにもかかわらず、それらとともに一つの組にまとめられてしまっている。そのため、第2正規形でない関係は、そのような属性をその他の属性とは独立して挿入・削除・更新する必要が生じるにもかかわらず、それをすることができない(無理に行えば更新異常を起こす)。第2正規形では、この問題の一部が解決されるが、推移的関数従属性(後述)が残る。
例えば、{会社コード, 代表者氏名, 従業員番号, 従業員氏名} という従業員台帳関係で、{会社コード, 従業員番号} の集合が候補キーだとすると(従業員番号は会社内でのみ一意性が保証されているものとする)、会社コード → 代表者氏名 という部分従属があるから、この関係は第2正規形ではない。この関係では、会社コードと代表者氏名の対応が組によって異なるという事態が発生する危険があるし、従業員のデータが存在しない会社については会社コードと代表者氏名の対応を保存することができない。
第1正規形の関係は、常に無損失なように第2正規形に分解することができる。無損失とは、分解してできた関係を結合して元の関係に復元できることを指す。
第5正規形 (fifth normal form; 5NF) を満たす関係は、その関係が第4正規形であり、さらにその関係に含まれる結合従属性の決定項が候補キーのみである場合、かつその場合だけである。 第5正規形は、射影-結合正規形 (project-join normal form; PJ/NF) とも呼ばれる。
結合従属性の定義を述べる。 R を関係とし、A, B, ... , Z を、R の属性集合の任意の部分集合とする。 このとき、R が A, B, ... , Z 上の射影の結合と等しいときかつそのときに限り、R は結合従属性
* ( A, B, ... , Z )
を満たすという。
例を示して説明する。 この例は、医療情報の関係データベースである。 このデータベースには精神科医-保険会社-病気関係が一つ存在する。
精神科医-保険会社-病気関係の候補キーは、{精神科医, 保険会社, 病気} である。 この候補キーは3つの属性から構成される複合キーである。
各精神科医は、それぞれがいくつかの保険会社から払い戻しを受けて治療を行う。 各精神科医は、それぞれがいくつかの病気を治療することができる。 各保険会社は、それぞれがいくつかの病気を保険の対象とする。
精神科医は患者に対して、払い戻しができる範囲での治療法を行うことができる。