機能の依存関係は、データベース全体または特定の関係に適用されますか?


8

私はdbmsが初めてです。機能的な依存関係についての講義ビデオを見ました。しかし、機能的な依存関係がデータベース全体または特定のスキーマに対する制約であるかどうか、少し混乱していますか?

回答:


9

機能的な依存性は関数の出力は常に入力によって決定されます-用語が意味するものを正確にです。たとえば、関数f()があり、変数xを提供し、常に出力yを受け取る場合、yはxに機能的に依存しています。これは、2x + 1 = y いくつかのサンプル値を取得した関数にプラグインする単純なグラフ関数のように考えることができます 。

X    Y
------
1    3
2    5
3    7

等々。したがって、xのすべての値について、常にそのxのyの値になるyの値があることがわかります。

Coddは、1つのデータ要素の値が常に2番目のデータ要素の既知の値になるかどうかを、関数の入力または出力であるかのように判断することに関して、これをデータ管理に適合させました。したがって、たとえば、小さな会社の各従業員に従業員番号が割り当てられていることがわかり、従業員番号と名前の単純なリストを作成すると、名前はその従業員番号に機能的に依存していることがわかります。たとえば、従業員番号7が表示されるたびに、「ジムブラウン」という名前が表示されます。これは、データベースで現実の世界に当てはまる命題を表しています。つまり、従業員番号7は「ジムブラウン」という名前の人物であり、「それが彼だ」と言うことができます。

関数への入力と期待される出力との間には1対1の関係があるため、機能の依存関係は一意の制約として実装できます。代数の例では、2を方程式2x + 1に代入すると、常に5が得られます。上記の例のデータ管理にその例を適用すると、従業員番号が7になるたびに、名前が1つだけ必要です。それに伴うその他の特性。"ジムブラウン" "ボブジョーンズ"に関連付けられた従業員番号7 は、7を2x + 1に接続すると15と25が得られると言う以上に関連付けることができません。

機能的な依存関係は、他のデータ要素のセットと1対1の関係にあり、値が常に最初のセットで変化するデータ要素の各セットを識別する一意の制約が各テーブルに配置されたときに実装によって定義されます。通常、表記は次のとおりです。

A,B ---> C

これは、AとBの値がCの値を決定することを意味します。おそらくAは従業員番号で、Bは扶養家族番号で、Cは扶養家族の名前です。したがって、この意味で、これらはすべてのデータベースのすべてのスキーマのすべてのテーブルに適用されます。

関係理論に関するいくつかの優れた参考資料は、Fabian PascalのPractical Database Foundation SeriesとChris Dateの著書 『Relational Theory for Computer Professionals』です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.