【问题标题】:What is a database closure?什么是数据库关闭?
【发布时间】:2011-09-13 12:58:40
【问题描述】:

我遇到了一个叫做数据库关闭的术语。

我试图寻找它以及它的确切含义,但我没有找到任何简单的解释。

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

一般来说,似乎还有一个闭包术语:http://en.wikipedia.org/wiki/Closure_%28computer_science%29,它与将变量绑定到函数有关。数据库关闭与此有关吗?

谢谢!

【问题讨论】:

  • 你是从哪里看到这个词的?
  • 提供上下文会很有用。如果这是在网络上,请提供指向您看到该术语的页面的链接。如果是在其他地方,请指定在哪里,并在前后给出一些相关的句子。
  • blog.ttechnic.com/2010/10/… 。更小鬼,我想了解这个概念,以及它与数据库的关系,而不是它在链接中的含义
  • 关闭在很多情况下可能意味着很多事情。没有这种背景,很难回答。
  • Thnx Johan,我已经接受了一个答案,但要回答你的问题,当然这可能意味着很多事情,所以单词性能在不同情况下可能意味着很多,但一般意义上它确实意味着更快地完成事情或完成更多事情..当我听到关闭时应该想到什么想法..这是否意味着“完整性”/“详尽”? ..你能举一些你正在谈论的不同背景的例子吗?希望听到更多的观点。

标签: sql database closures


【解决方案1】:

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

一个例子:

如果我们有两个集合 X 和 Y(您可以将其视为两个称为 X 和 Y 的表)并且它们彼此之间存在如下关系: X -> Y(读作 Y 依赖于 X)

我们还有另一个依赖于 Y 的集合 Z: Y -> Z(也读作 Y 决定 Z)

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

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

如果您想了解更多信息,闭包是称为规范化的主题的一部分。

【讨论】:

  • 您的意思是说Y -> Z 而不是Z -> Y
  • 这个答案具有误导性。在所呈现的情况下,闭包不是 X,“我们可以达到所有关系的最小表数”——这是在定义一个键。给定函数依赖 X → Y 和 Y → Z,{X} 的闭包是 {X, Y, Z}。换句话说,{X} → {X, Y, Z}。因为 X 的闭包包含所有属性/关系,所以 X 是一个很好的键。
【解决方案2】:

在数据库理论/集合论讨论中提到了闭包——比如 Codd 博士/设计和规范化之类的东西。它与找到集合的最小表示元素(即没有冗余等)有关。我很久以前就尝试阅读它,但我的眼睛交叉了,我头疼得厉害。

如果你想阅读一个体面的结束总结,这里有一个:http://www.cs.sfu.ca/CC/354/jpei/slides/ClosureDecomposition.pdf

【讨论】:

  • thnx user542398,至少现在有一些文档。我同意头疼。我会在美好的一天再次尝试查看它。有人能用英文解释吗?顺便说一句,我不接受这一点,希望有人能以更简单的方式来解释这一点。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    正式的数学定义:

    给定一组函数依赖项 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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        • 2011-02-03
        • 2011-05-13
        • 2017-08-01
        • 1970-01-01
        • 2013-02-17
        • 2011-05-05
        相关资源
        最近更新 更多