阿姆斯特朗公理
阿姆斯特朗公理系统(英語: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.