多値従属性(Multivalued Dependency)とは
多値従属性(MVD)とは、
関係データベースにおいて、ある属性
集合の値が、他の複数の属性
集合の値に依存する関係を表す制約です。具体的には、ある属性Aの値が決定したとき、属性Bの値の
集合が、別の属性Cの値には依存せずにAの値のみによって決まる場合、BはAに多値従属していると言います。
これは、
関数従属性とは異なり、一つの属性値に対して複数の属性値の
集合が対応する状況を扱うことができます。例えば、コース、参考図書、講師の関係を考えると、あるコースに対して複数の参考図書と講師が存在し、それぞれが互いに独立している場合に多値従属性が発生します。
多値従属性は、データベースの正規化、特に第4正規形(4NF)を達成する上で重要な概念です。多値従属性を理解することで、データの冗長性を排除し、データベースの整合性を保つことができます。
多値従属性の定義
関係Rの属性
集合をA, B, Cとしたとき、BがAに多値従属するとは、Rの任意の(Aの値、Cの値)のペアに対応するBの値の
集合が、Aの値のみによって決まり、Cの値に依存しない場合を指します。
この関係は以下のように表されます。
A ->> B
これは、「Aの値がBの値の
集合を多値的に決定する」という意味を持ちます。
関数従属性は、ある属性の値が一つ決まると、別の属性の値が一つ決まるという一対一の関係を表します。一方で、多値従属性は、ある属性の値が一つ決まると、別の属性の値の
集合が決まるという一対多の関係を表します。多値従属性は、
関数従属性をより一般化した概念と言えます。
多値従属性の例
講義コースのデータベースを例に考えてみましょう。
コース | 参考図書 | 講師 |
---|
:- | :- | :--- |
AHA | 図書A | 講師X |
この表では、「コース」という属性に対して、複数の「参考図書」と「講師」が存在します。しかし、「参考図書」と「講師」は互いに独立しており、あるコースが決まれば、対応する「参考図書」の
集合と「講師」の
集合が決まります。
この例では、以下の2つの多値従属性が存在します。
{コース} ->> {参考図書}
{コース} ->> {講師}
多値従属性が引き起こす問題点
上の例のように、多値従属性が存在し、かつ決定項(左辺)が
候補キーでない場合、データの冗長性が生じます。
例えば、AHAコースに新しい参考図書を追加する場合、AHAコースのすべての講師に対して、新しい参考図書を登録する必要があります。同様に、AHAコースに新しい講師を追加する場合も、AHAコースのすべての参考図書に対して、新しい講師を登録する必要があります。これはデータの更新や削除時に矛盾を引き起こす原因となります。
正規化と多値従属性
多値従属性の存在する関係では、決定項が
候補キーである場合に限り、第4正規形(4NF)を満たします。このとき、多値従属性は事実上は
関数従属性となります。上記の例では、テーブルを以下のように分割することで4NFに正規化できます。
テーブル1:コースと参考図書
コース | 参考図書 |
---|
:- | :--- |
AHA | 図書A |
AHA | 図書B |
BCD | 図書C |
BCD | 図書D |
テーブル2:コースと講師
コース | 講師 |
---|
:- | :- |
AHA | 講師X |
AHA | 講師Y |
BCD | 講師Z |
このようにテーブルを分割することで、冗長性が解消され、データの整合性を保つことができます。
多値従属性の特性
α、β、γ、δを関係Rの属性の
部分[[集合]]とする。多値従属性 α ->> β が成立するとき、以下の特性が成り立ちます。
1. α ->> β ならば、α ->> R - β
2. α ->> β かつ γ ⊆ δ ならば、αδ ->> βγ
3. α ->> β かつ β ->> γ ならば、α ->> γ - β
これらの特性は、多値従属性を扱う上で非常に重要です。
関数従属性(→)を用いると、多値従属性に関する以下の特性を示すことができます。
1. α → β ならば、α ->> β
2. α ->> β かつ β → γ ならば、α → γ - β
これらの規則は広く知られており、完全な規則とされています。
まとめ
多値従属性は、
関係データベースにおける属性間の複雑な依存関係を表す重要な概念です。データの冗長性を排除し、データベースの整合性を保つために、多値従属性を理解し、適切な正規化を行うことが重要です。多値従属性は
関数従属性を一般化した概念であり、特に第4正規形を理解する上で不可欠な知識となります。