1. ホーム
  2. database

[解決済み] 部分依存性(データベース)

2022-03-03 22:22:56

質問

部分依存とは、フィールドが主キーに間接的に依存しているか、部分的に依存しているが、主キーに依存している他のキーにも依存している場合、他のフィールドが依存しているフィールドが削除されても、主キーへの依存のためにそのフィールドは存在する、という定義を作りました。これが正しいかどうかはわかりません。調べてみたところ、どの定義も誤解を招きそうです。私の定義は正しいのでしょうか、正しくない場合はどうすればよいのでしょうか。

解決方法は?

ある関係で成立するFD(関数従属)は、決定属性の一つを取り除くと関係で成立するFDが得られるとき、部分的である。部分的でないFDは完全である。

例:{A,B} → {C}でありながら{A} → {C}でもあるとします。すると、{A,B} → {C}は部分的であり、{C}は{A,B}に部分的に関数従属し、{C}は{A,B}の全部でない部分に関数従属することになる。結果論的な部分FDは ない {A} → {C} です。それが部分的かどうかは、(部分的FDの定義によれば){A}の部分集合が{C}を決定するかどうか、{} → {C}かどうかに依存します。

例:次のような関係です。 という条件が成立します。(関係においてFDが成立する 変数 は、発生しうるすべての値において成立する)。

A  B  C
1  1  1
1  2  1
2  1  1

自明でないFDが成立していること。{A,B} は {C} を決定し、{B,C}, {A,C} & {A,B,C}; {A}, {B} & {} は {C} も決定します。それらのうち {A,B} → {C}は{A} → {C}, {B} → {C} & {} → {C}につき部分的、{A} → {C} & {B} → {C}は{} → {C}につき部分的、他は完全です。

関数従属X → Yは、Xから任意の属性Aを削除すると従属がそれ以上保持されないことを意味する場合、完全関数従属である;すなわち、任意の属性A ε Xに対して、(X - {A})はYを関数的に決定しない。関数従属X → Yは、ある属性A ε XがXから削除でき、従属がまだ保持される場合、部分従属である;すなわち、いくつかのA ε Xに対して、(X - {A})→Yである。

-- データベースシステムの基礎 第6版、ラメス・エルマスリ&ナバテ

FDが完全か部分かは、CK(候補キー)には依存せず、PK(主キー)と呼ばれる1つのCKにも依存しないことに注意しましょう。

(2NFの定義は、すべての非CK属性が、すべてのCKによって完全に関数的に決定されることです。唯一のCKは{A,B}であり、唯一の非CK属性Cはそれに部分的に依存しているので、この値は2NFではありません。実際、それは{A,B} & {A,C}, {A,B} & {B,C} & {A,B} & {C}への成分/投影のロスレス結合です)。

(その教科書の「他動的FD」の定義には、次のようなものがあるので注意が必要です。 ではない の標準的な定義と同じ種類のものを定義しています)。