関係の正規化
関係の正規化(かんけいのせいきか)は、関係データベース (リレーショナル・データベース) において、関係(リレーション)を正規形と呼ばれる形式に準拠させることにより、データの一貫性の維持と効率的なデータアクセスを可能にする関係設計を導くための方法である。正規形には様々なものが存在するが、いずれにせよ、正規化を行うことにより、データの冗長性と不整合が起きる機会を減らすことができる。
多くの関係データベース管理システム (RDBMS) は、論理的なデータベース設計とデータを格納する物理的な実装方法とが十分に分離されていないので、完全に正規化されたデータベースへのクエリ(検索質問)はパフォーマンスが良くないことがある。このような場合、パフォーマンスを向上させるためにデータの一貫性の低下と引き換えにあえて非正規化されることもある。
ある正規形であるためには、ある時点でたまたま関係(表、テーブル)中にあるすべての組(タプル、行)の値がその定義に当てはまるだけでは十分でなく、過去及び将来において、その関係中の組に増減があっても、定義から外れることがないように属性(列、カラム)が定義されていることを要する。
注意すべきは、実際の関係データベース管理システムでは、属性の定義域(ドメイン)に合致する限りで関係の中にどんな値からなる組でも入れることができるが、ここでの議論は「関係にはそれぞれの属性に対応した現実の事象を表す組としてシステム要件上あり得るものだけが入る」という暗黙の制約が仮定されていることである。言い換えれば、正規形の定義では各属性の値が属性ごとに一定の意味を持っていることが仮定される。これは、正規化が、与えられたある特定の要件に対して、ある特定の妥当な設計を導くための方法であることに由来する。
第4正規形 (fourth normal form; 4NF) では候補キーではない属性への多値従属性をもった属性があってはならない。
多値従属性の定義を述べる。 R を関係とし、A, B, C を、R の属性集合の任意の部分集合とする。 R のある (A値, C値) 対に対応するB値の集合がA値だけに依存し、C値には独立かつそのときに限り、B は A に多値従属しているといい、次のように表す。
A B
例を示して説明する。 この例は、講義コースの関係データベースである。 各コースで推奨されている参考図書がある。 各コースには講義する予定となっている講師がいる。
講師はコースに属している。 参考図書はコースに属している。 講師と参考図書は互いに独立している。 こうしたことから、このデータベース設計には多値従属性が存在すると、述べることができる。 この例の関係は {コース, 参考図書, 講師} を候補キーとするボイス=コッド正規形 (BCNF) であるが、第4正規形 (4NF) ではない。