什么是数据库闭包?

时间:2011-06-12 20:13:39

标签: sql database closures

我遇到了这个称为数据库关闭的术语。

我试图寻找它,究竟是什么意思,但我没有找到任何简单的解释。

有人可以解释一下闭包的概念是什么,具体是什么是数据库闭包,如果好/坏,它是如何使用或避免的?

似乎通常还有一个闭包术语:http://en.wikipedia.org/wiki/Closure_%28computer_science%29,它涉及变量与函数的绑定。数据库关闭是否与此相关?

谢谢!

5 个答案:

答案 0 :(得分:14)

关闭实际上是一个相对简单的概念。在设计数据库时,我们想知道我们的数据库表具有尽可能少的冗余。这意味着确保我们可以在集合(或表格)之间建立尽可能少的关系。

一个例子:

如果我们有两组X和Y(您可以将其视为两个名为X和Y的表)并且它们之间具有相互关系: X - > Y(读取此为Y取决于X)

我们有另一套Z依赖于Y: Y - > Z(也读为Y确定Z)

为了找到闭包,我们找到了可以达到所有关系的最小表数。在这种情况下,我们只需要X.

所以现在,当我们设计我们的数据库时,我们知道我们只需要有一个来自X的关系,而Z和Y实际上可以从X派生。因此我们可以确保我们的数据库中没有额外的关系导致冗余。

如果你想阅读更多内容,闭包是一个称为规范化的主题的一部分。

答案 1 :(得分:2)

数据库理论/集合论讨论中提到了闭包 - 例如,Codd博士/设计与实践;规范化的东西。它与查找集合的最小代表性元素(即没有冗余等)有关。我很久以前就尝试过阅读,但是我的眼睛越过了,我头疼得厉害。

如果你想阅读一个合适的闭包摘要,这里有一个:http://www.cs.sfu.ca/CC/354/jpei/slides/ClosureDecomposition.pdf

答案 2 :(得分:1)

所有操作都在整个关系上执行,并产生一个完整的关系,这个概念称为闭包。这是关系数据库系统特性之一

答案 3 :(得分:0)

如果我们在功能依赖意义上指的是Closure(与数据库设计有关),

The closure of a set F of functional dependencies is the set of all functional dependencies logically implied by F.

集合的最小表示形式称为canonical cover:描述闭包的不可约的FD集合。

答案 4 :(得分:0)

闭包本质上是可以使用给定数据库的功能依赖性从一组已知属性中确定的完整属性集。

正式的数学定义:

  

给出一组功能依赖项F和一组属性X。闭包定义为属性Y的集合,这样X-> Y从F开始。

算法定义:

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

可以证明两个定义是一致的。

数据库关闭可能是指所有数据库属性的关闭。根据上面的定义,此关闭将是数据库本身所有属性的集合。

您链接到的闭包(计算机科学)术语与数据库中的闭包无关,而mathematical closure与数据库中的闭包有关。

为了更好地理解功能依赖关系和数据库中关闭的简单示例,建议阅读this