web-dev-qa-db-ja.com

データベースクロージャとは何ですか?

私はデータベースクロージャと呼ばれるこの用語に出くわしました。

私はそれとそれが正確に何を意味するのかを探そうとしましたが、簡単な説明は見つかりませんでした。

誰かがクロージャの概念とは何か、具体的にはデータベースクロージャとは何か、それが良い/悪い場合、それをどのように使用または回避できるかを説明できますか?

また、一般的にクロージャ用語があるようです: http://en.wikipedia.org/wiki/Closure_%28computer_science%29 これは変数の関数へのバインドに関連しています。データベースの閉鎖はこれに関連していますか?

ありがとう!

21
codeObserver

クロージャは実際には比較的単純な概念です。データベースを設計するときは、データベーステーブルの冗長性が可能な限り少ないことを知りたいと思います。これは、セット(またはテーブル)間の関係をできるだけ少なくすることを意味します。

例:

XとYの2つのセット(XとYと呼ばれる2つのテーブルと考えることができます)があり、それらが互いに次のように関係している場合:X-> Y(YはXに依存しているためこれを読んでください)

そして、Yに依存する別のセットZがあります:Y-> Z(YがZを決定するときにも読み取られます)

クロージャを見つけるために、すべての関係に到達できるテーブルの最小数を見つけます。この場合、必要なのはXだけです。

したがって、データベースを設計するとき、Xからの関係のみが必要であり、ZとYは実際にはXから派生できることがわかります。したがって、冗長性を引き起こす余分な関係がデータベースにないことを確認できます。

詳細を読みたい場合は、クロージャは正規化と呼ばれるトピックの一部です。

14
tushar747

クロージャは、データベース理論/集合論の議論で言及されています-コッド博士/設計と正規化のようなもののように。それは、セットの最小限の表現要素を見つけることと関係があります(つまり、冗長性がないなど)。ずっと前に読んでみたのですが、目が交差してひどい頭痛がしました。

閉鎖のまともな要約を読みたい場合は、ここに1つあります: http://www.cs.sfu.ca/CC/354/jpei/slides/ClosureDecomposition.pdf

2
Chains

すべての操作はリレーション全体に対して実行され、結果としてリレーション全体が生成されます。これはクロージャと呼ばれる概念です。そしてそれはリレーショナルデータベースシステムの特徴の1つです

1
Lena Bilous

関数従属性の意味で(データベース設計に関連して)クロージャを参照している場合、

関数従属性のセットFの閉包は、Fによって論理的に暗示されるすべての関数従属性のセットです。

セットの最小表現は 正規カバー と呼ばれます:クロージャーを記述するFDの還元不可能なセット。

0
Ulad Kasach

クロージャは基本的に、機能依存性を使用して、特定のデータベースの既知の属性のセットから決定できる属性の完全なセットです。

正式な数学の定義:

関数従属性のセットF、および属性のセットXが与えられます。クロージャは、X-> YがFから続くような属性Yのセットとして定義されます。

アルゴリズムの定義:

Closure(X, F)
1  INITIALIZE V:= X
2  WHILE there is a Y -> Z in F such that:
   - Y is contained in V and
   - Z is not contained in V
3       DO add Z to V
4  RETURN V

2つの定義が一致していることを示すことができます。

データベースの閉鎖とは、すべてのデータベース属性の閉鎖を指す場合があります。上記の定義によれば、このクロージャはデータベース自体のすべての属性のセットになります。

リンクしたクロージャ(コンピュータサイエンス)の用語は、データベースのクロージャとは関係ありませんが、 数学的なクロージャ は関係があります。

関数従属性とデータベースでのクロージャの簡単な例をよりよく理解するには、 this を読むことをお勧めします。

0
Adam Rosenthal