阿姆斯特朗公理

阿姆斯特朗公理系统(英语:Armstrong's axioms)是一组用于推导关系数据库中所有函数依赖规则。这一系统由威廉·W·阿姆斯特朗在1974年的论文中首次提出。[1] 当应用于函数依赖集(用 表示)时,这些规则在生成该集闭包(用 表示)中的函数依赖方面既可靠又完备。换言之,反复应用这些规则,我们能够推导出闭包 中的所有函数依赖,且不会产生不属于该闭包的依赖关系。

让我们用更严谨的方式来描述这个概念。假设 代表一个关系模式,其中 是属性集, 是函数依赖集。如果所有满足 中函数依赖的, 的实例 ,也都同时满足函数依赖 ,那么我们就说 逻辑蕴含,记作 。我们用 来表示所有被 逻辑蕴含的函数依赖的集合。

再来看推理规则集 的作用。如果我们能够通过反复运用 中的规则,从 中推导出函数依赖 ,我们就说 可由 通过 所推导,记作 。我们用 表示所有可以通过 推导出的函数依赖的集合。

那么,当且仅当以下条件成立时,推理规则集 是可靠的:

也就是说,使用 推导出的函数依赖不能超出由 逻辑蕴含的函数依赖范围。 推理规则集 的完备性当且仅当以下条件成立:

更简单地说,推理规则集 能够推导出所有由 逻辑蕴含的函数依赖。

公理(基本规则)

 是定义在属性集 上的关系模式。在接下来的讨论中,我们将用   表示 的任意子集。为了简洁,我们用 代替常规的 来表示两个属性集  的并集。这种记法在处理资料库理论中的属性集合时是相当常见的。

自反律

如果 是一个属性集,  的一个子集,那么 函数决定 (也就是 函数依赖 ),记作 

  .

增广律

如果 决定 ,那么在  中同时添加任意属性集 后,这种决定关系仍然成立。这表明,增加新的属性不会改变已有的函数依赖关系。

 ,则对任意属性集 ,都有 .

传递律

函数依赖关系具有传递性。也就是说,如果 决定 ,且 决定 ,那么 必然也决定 

  ,则 .

公理的推论

这些推论可以从上述公理中推导出来。

分解规则

 ,则  

证明

1.   (已知)
2.   (自反性)
3.   (1和2的传递性)

合成规则

  ,则 

证明

1.   (已知)
2.   (已知)
3.   (1和A的增广性)
4.   (2和Y的增广性)
5.   (3和4的传递性)

合并规则

如果  ,则 

证明

1.   (已知)
2.   (已知)
3.   (2和X的增广性)
4.   (1和Z的增广性)
5.   (3和4的传递性)

伪传递规则

  ,则 

证明

1.   (已知)
2.   (已知)
3.   (1和Z的增广性)
4.   (3和2的传递性)

自确定性

对于任意  。这直接由自反性公理得到。

扩展规则

 时,该属性是增广性的一个特殊情况。

 ,则 

在这种意义上,扩展性可以替代增广性作为公理,因为通过扩展性和其他公理可以证明增广性。

证明

1.   (自反性)
2.   (已知)
3.   (1和2的传递性)
4.   (3的扩展性)
5.   (自反性)
6.   (4和5的传递性)

参考文献

  1. ^ William Ward Armstrong: Dependency Structures of Data Base Relationships, page 580-583. IFIP Congress, 1974.

外部链接