多値従属性

多値従属性(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

AHA 図書B 講師X

AHA 図書A 講師Y

AHA 図書B 講師Y

BCD 図書C 講師Z

BCD 図書D 講師Z


この表では、「コース」という属性に対して、複数の「参考図書」と「講師」が存在します。しかし、「参考図書」と「講師」は互いに独立しており、あるコースが決まれば、対応する「参考図書」の集合と「講師」の集合が決まります。

この例では、以下の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正規形を理解する上で不可欠な知識となります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。