私はデータベースクロージャと呼ばれるこの用語に出くわしました。
私はそれとそれが正確に何を意味するのかを探そうとしましたが、簡単な説明は見つかりませんでした。
誰かがクロージャの概念とは何か、具体的にはデータベースクロージャとは何か、それが良い/悪い場合、それをどのように使用または回避できるかを説明できますか?
また、一般的にクロージャ用語があるようです: http://en.wikipedia.org/wiki/Closure_%28computer_science%29 これは変数の関数へのバインドに関連しています。データベースの閉鎖はこれに関連していますか?
ありがとう!
クロージャは実際には比較的単純な概念です。データベースを設計するときは、データベーステーブルの冗長性が可能な限り少ないことを知りたいと思います。これは、セット(またはテーブル)間の関係をできるだけ少なくすることを意味します。
例:
XとYの2つのセット(XとYと呼ばれる2つのテーブルと考えることができます)があり、それらが互いに次のように関係している場合:X-> Y(YはXに依存しているためこれを読んでください)
そして、Yに依存する別のセットZがあります:Y-> Z(YがZを決定するときにも読み取られます)
クロージャを見つけるために、すべての関係に到達できるテーブルの最小数を見つけます。この場合、必要なのはXだけです。
したがって、データベースを設計するとき、Xからの関係のみが必要であり、ZとYは実際にはXから派生できることがわかります。したがって、冗長性を引き起こす余分な関係がデータベースにないことを確認できます。
詳細を読みたい場合は、クロージャは正規化と呼ばれるトピックの一部です。
クロージャは、データベース理論/集合論の議論で言及されています-コッド博士/設計と正規化のようなもののように。それは、セットの最小限の表現要素を見つけることと関係があります(つまり、冗長性がないなど)。ずっと前に読んでみたのですが、目が交差してひどい頭痛がしました。
閉鎖のまともな要約を読みたい場合は、ここに1つあります: http://www.cs.sfu.ca/CC/354/jpei/slides/ClosureDecomposition.pdf
すべての操作はリレーション全体に対して実行され、結果としてリレーション全体が生成されます。これはクロージャと呼ばれる概念です。そしてそれはリレーショナルデータベースシステムの特徴の1つです
関数従属性の意味で(データベース設計に関連して)クロージャを参照している場合、
関数従属性のセットFの閉包は、Fによって論理的に暗示されるすべての関数従属性のセットです。
セットの最小表現は 正規カバー と呼ばれます:クロージャーを記述するFDの還元不可能なセット。
クロージャは基本的に、機能依存性を使用して、特定のデータベースの既知の属性のセットから決定できる属性の完全なセットです。
正式な数学の定義:
関数従属性のセット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 を読むことをお勧めします。