阿姆斯特朗公理
阿姆斯特朗公理系统(英语: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的传递性) |
参考文献
- ^ William Ward Armstrong: Dependency Structures of Data Base Relationships, page 580-583. IFIP Congress, 1974.