函数依赖
函数依赖是一种约束,它表明一组属性的值唯一地决定另一组属性的值;函数依赖是驱动键发现和规范化的语义输入。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
如果关系模式上的函数依赖 X → Y 成立,则在每个合法实例中,任何在 X 中所有属性上都相同的两个元组,在 Y 中所有属性上也相同;也就是说,X 函数式地决定 Y。
Scope
本主题涵盖函数依赖(FDs)及其形式理论:X → Y 的定义、平凡和非平凡依赖、阿姆斯特朗公理(自反性、增广性、传递性)及其可靠性和完备性、属性集和函数依赖集的闭包、规范(最小)覆盖,以及使用函数依赖计算候选键。它不包括多值依赖和连接依赖,以及使用函数依赖进行测试的范式,这些将在相邻主题中讨论。
Core questions
- 一个属性集函数式地决定另一个属性集意味着什么?
- 哪些推理规则(阿姆斯特朗公理)对于函数依赖是可靠和完备的?
- 属性集的闭包是如何计算的,它有什么用途?
- 如何从一组函数依赖中导出候选键?
- 什么是最小(规范)覆盖,它为什么有用?
Key concepts
- 函数依赖 X → Y
- 平凡依赖与非平凡依赖
- 阿姆斯特朗公理
- 属性集闭包
- 函数依赖集的闭包
- 候选键和超键
- 最小(规范)覆盖
- 可靠性和完备性
Key theories
- 函数依赖
- X → Y 约束一个关系,使得 X 值决定 Y 值;函数依赖将模式必须强制执行的现实世界规则(例如键决定所有其他属性)形式化。
- 阿姆斯特朗公理
- 自反性、增广性和传递性构成了函数依赖的可靠且完备的推理系统,因此可以从给定集合中推导出所有且仅所有逻辑上隐含的依赖。
- 属性闭包和最小覆盖
- 属性集在函数依赖集下的闭包揭示了它决定哪些属性(从而判断它是否是超键),而最小覆盖是等价的、非冗余的函数依赖集,用作规范化的基础。
Clinical relevance
函数依赖是模式设计工具的实际输入,也是数据库设计者用来识别键并决定如何拆分表的推理依据;正确理解它们能够使规范化在不丢失信息的情况下消除冗余。
History
函数依赖由 Codd 与关系模型及其规范化一同引入,W. W. Armstrong 于 1974 年提出了以他名字命名的公理系统,并证明了其可靠性和完备性。这些结果使依赖推理算法化,并支撑了所有后续的规范化理论。
Key figures
- Edgar F. Codd
- William W. Armstrong
Related topics
Seminal works
- codd1972
- armstrong1974
- silberschatz2019
Frequently asked questions
- 函数依赖与键有何不同?
- 键是一个特例:候选键 K 是一个最小属性集,其闭包是整个关系,即 K 函数式地决定所有属性。函数依赖是更一般的约束,通过计算属性闭包可以从中导出键。
- 为什么要计算最小覆盖?
- 最小(规范)覆盖是一个等价的函数依赖集,其中没有冗余依赖或无关属性。从最小覆盖开始工作可以简化键的查找,并在规范化过程中产生更清晰的分解,尤其是在寻求保持依赖的设计时。