【函数依赖基本性质】函数依赖是关系数据库理论中的一个重要概念,用于描述关系中属性之间的依赖关系。理解函数依赖的基本性质有助于更好地设计数据库结构,避免数据冗余和不一致问题。本文将总结函数依赖的主要性质,并以表格形式进行归纳。
一、函数依赖的基本定义
设R是一个关系模式,U是R的属性集合,A和B是U中的两个属性或属性集。若在R的所有可能的元组中,对于每一个A的值,都有唯一的B值与之对应,则称A函数决定B,记作:A → B,称为一个函数依赖。
二、函数依赖的基本性质
1. 自反性(Reflexivity)
如果B ⊆ A,则A → B。即,任何属性集都函数决定其子集。
2. 增广性(Augmentation)
若A → B,则对于任意属性集C,有A ∪ C → B ∪ C。即,在函数依赖的两边同时添加相同的属性,函数依赖仍然成立。
3. 传递性(Transitivity)
若A → B,且B → C,则A → C。即,如果A决定B,B又决定C,那么A也决定C。
4. 合并性(Union)
若A → B,且A → C,则A → BC。即,若A同时决定B和C,则A可以决定它们的并集。
5. 分解性(Decomposition)
若A → BC,则A → B 和 A → C。即,若A决定多个属性的组合,则A也可以分别决定每个属性。
6. 伪传递性(Pseudotransitivity)
若A → B,且BC → D,则AC → D。即,若A决定B,而B和C共同决定D,则A和C共同决定D。
7. 等价性(Equivalence)
若A → B,且B → A,则A ↔ B,表示A和B相互决定,互为等价。
8. 闭包(Closure)
给定一个函数依赖集F,其闭包F⁺表示由F推导出的所有函数依赖的集合。闭包可用于判断某个函数依赖是否可以从F中推出。
三、函数依赖性质总结表
| 性质名称 | 描述 | 示例 |
| 自反性 | 若B是A的子集,则A → B | A = {A, B}, B = {B} → A → B |
| 增广性 | 在函数依赖的两边同时添加相同属性,依赖关系不变 | A → B ⇒ AC → BC |
| 传递性 | A → B,B → C ⇒ A → C | A → B,B → C ⇒ A → C |
| 合并性 | A → B,A → C ⇒ A → BC | A → B,A → C ⇒ A → BC |
| 分解性 | A → BC ⇒ A → B 和 A → C | A → BC ⇒ A → B 和 A → C |
| 伪传递性 | A → B,BC → D ⇒ AC → D | A → B,BC → D ⇒ AC → D |
| 等价性 | A → B 且 B → A ⇒ A ↔ B | A → B,B → A ⇒ A 和 B 相互决定 |
| 闭包 | F⁺ 是由F推导出的所有函数依赖的集合 | F = {A→B, B→C},则F⁺ 包含 A→B, B→C, A→C 等 |
四、小结
函数依赖的基本性质是数据库规范化设计的重要理论基础。掌握这些性质有助于我们更准确地分析和设计关系模式,确保数据的一致性和完整性。通过合理应用这些性质,可以有效减少数据冗余,提高数据库的效率和可维护性。


