数据库闭包是什么?

22
我看到一个术语叫做“数据库闭包”。我想了解它的确切含义,但是没有找到简单易懂的解释。请问有人可以解释一下闭包的概念,特别是什么是数据库闭包,它是好的/坏的,如何使用或避免?
似乎还有一个通用的闭包术语:http://en.wikipedia.org/wiki/Closure_%28computer_science%29,它涉及将变量绑定到函数上。数据库闭包与此相关吗?
谢谢!

1
你在哪里遇到这个术语的? - Oded
提供上下文会很有用。如果这是在网页上,提供一个链接到您看到这个术语的页面。如果它出现在其他地方,请指明位置,并提供前后几个相关的句子。 - Andrew Savinykh
请翻译以下关于编程的内容从英文到中文。仅返回翻译后的文本:http://blog.ttechnic.com/2010/10/database-closure-and-candidate-key.html 。更重要的是,我想了解这个概念的一般性质以及它与数据库的关系,而不是在链接中的上下文含义。 - codeObserver
闭包在很多情境下都有不同的含义。如果没有上下文,很难回答这个问题。 - Johan
谢谢Johan,我已经接受了一个答案,但是回答你的问题,当然它可能意味着很多事情,就像“性能”一词在不同情况下可能有很多含义,但是从一般意义上讲,它确实意味着更快地完成任务或完成更多任务。当我听到“closure”这个词时,应该想到什么概念呢?是指“完整性”/“详尽性”吗?你能举一些不同情境的例子吗?我很想听听更多的观点。 - codeObserver
我的第一个想法是“封闭世界假设”。 - onedaywhen
5个回答

15

闭包实际上是一个相对简单的概念。在设计数据库时,我们希望尽可能减少数据库表中的冗余。这意味着确保我们在集合(或表)之间尽可能少地建立关系。

举个例子:

假设我们有两个集合X和Y(可以将其视为两个名为X和Y的表),它们彼此有关系,如下所示: X -> Y (读作:Y依赖于X)

我们又有一个集合Z,它依赖于Y: Y -> Z (也可以读作:Y确定Z)

要找到闭包,我们需要找到能够覆盖所有关系的最小表数量。在这种情况下,我们只需要X。

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

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


5
你是说你本来是想说 Y -> Z 而不是 Z -> Y - Michael Slevin
1
这个答案是误导性的。在所提出的情况下,闭包不是X,“我们可以通过最少的表格达到所有关系”的定义——这是在讨论键的定义。鉴于函数依赖X → Y和Y → Z,{X}的闭包是{X,Y,Z}。换句话说,{X} → {X,Y,Z}。因为X的闭包包含所有属性/关系,所以X是一个很好的键。 - Nolan Strait

2
闭包在数据库理论/集合论讨论中被提到--比如,Codd博士/设计和规范等。它与查找最小表示元素的集合有关(即没有冗余等)。我曾经试着阅读这方面的知识,但我的眼睛变得模糊,我头痛欲裂。
如果您想阅读一个不错的闭包摘要,请参考此链接:http://www.cs.sfu.ca/CC/354/jpei/slides/ClosureDecomposition.pdf

谢谢user542398,至少现在有一些文档了。我同意会感到头痛。我会在好的日子里再试着看一下它。有人能用英语解释一下吗?顺便说一句,我不是因为希望有人能以更简单的方式解释而不接受这个。 - codeObserver

2

闭包是指在给定数据库的功能依赖关系下,可以从已知属性集合中确定的所有属性。

正式数学定义:

给定一组功能依赖关系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
可以证明这两个定义是一致的。
数据库闭包可能指的是所有数据库属性的闭包。根据上面的定义,这个闭包将是数据库本身所有属性的集合。
你提供的“闭包(计算机科学)”术语与数据库中的闭包无关,但数学闭包与之相关。
为了更好地理解函数依赖关系和数据库中闭包的简单示例,建议阅读this

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接