函数依赖的**传递性(Transitivity)**,属于逻辑蕴涵,无需额外条件

📅 2026/8/11 8:53:07
函数依赖的**传递性(Transitivity)**,属于逻辑蕴涵,无需额外条件
选项 B 正确若 X→Y 且 Y→Z且 Y↛X即 Y 不函数决定 X则称 Z 对 X 存在传递函数依赖但严格来说仅由 X→Y 和 Y→Z 就可推出 X→Z这是函数依赖的传递律是 Armstrong 公理系统的基本推理规则之一无论 Y 是否决定 X。因此“X→Y 且 Y→Z ⇒ X→Z”恒成立这就是函数依赖的传递性Transitivity属于逻辑蕴涵无需额外条件。故 B 描述正确尽管“传递依赖”术语常特指非平凡、非主属性对非超键的传递依赖但题干括号中写的是“传递依赖”略欠严谨然而在选择题语境下B 是唯一符合函数依赖基本公理的正确陈述。逐项分析A. 错误。平凡函数依赖指 Y ⊆ X则 X→Y 恒成立。它既不是完全依赖也不是部分依赖因无“真子集”可言更不等价于“非完全依赖”。完全/部分依赖仅针对非平凡依赖且 X 为超键时讨论平凡依赖不参与范式判断中的依赖分类不能简单说它是“非完全依赖”。C. 错误。部分函数依赖定义为X→YX 为候选键或超键存在真子集 X′⊂X使得 X′→Y。它可能出现在 1NF 中但并非“一定存在”。例如一个关系模式 R(A,B) 中AB 是候选键且 A→B则存在部分依赖但如果所有非主属性都完全函数依赖于候选键如 R(A,B,C)候选键为 AB且仅 AB→C无 A→C 或 B→C则 1NF 关系中可以没有部分依赖——只是此时它已满足 2NF。因此“一定存在”过于绝对错误。D. 错误。候选键是极小超键即其任何真子集都不能函数决定全部属性。因此候选键不能包含冗余属性含冗余属性的是超键而非候选键。综上唯一正确的是 B。函数依赖的 Armstrong 公理系统是关系数据库规范化理论的基础由三条自明的、 sound 且 complete的推理规则构成用于从给定函数依赖集 F 推导出其闭包 F⁺即所有逻辑蕴涵的函数依赖。✅三条基本公理自反律Reflexivity若 Y ⊆ X则 X → Y。→ 即“超集决定其子集”恒成立平凡函数依赖。例AB → AAB → BAB → AB 均成立。增广律Augmentation若 X → Y则 XZ → YZ其中 Z 是任意属性集。→ 两边同时添加相同属性依赖仍成立。例若 A → B则 AC → BC。传递律Transitivity若 X → Y 且 Y → Z则 X → Z。→ 类似于数学中的传递性是推导非平凡依赖的核心。例若 A → B 且 B → C则 A → C。这三条公理共同构成完备的推理系统——任何逻辑上由 F 蕴涵的函数依赖都可通过有限次应用这三条规则从 F 导出。✅由Armstrong公理推导的重要推理规则合并律Union Rule若 X → Y 且 X → Z则 X → YZ。推导过程① X → Y 已知② X → Z 已知③ 由增广律X → Y ⇒ XY → YY ⇒ XY → Y冗余但关键在下一步更标准推导- 由 X → Y应用增广律加 Z得XZ → YZ- 由 X → Z得 X → Z再用增广律加 Y得XY → ZY但更简洁严谨的推导如下① X → Y ⇒ X → Y自明② X → Z ⇒ X → Z③ 由增广律X → Y ⇒ X → Y不变再对 X → Z 应用增广律得X → Z ⇒ X → Z→ 实际常用辅助步骤a) X → Y ⇒ X → Y1b) X → Z ⇒ X → Z2c) 由 (1) 和增广律加 ZXZ → YZd) 由 (2) 得 X → Z故 XZ ≡ X因 Z 已被 X 决定所以 X → YZ。✅ 更规范的证明教科书标准- 由 X → Y根据增广律得X → XY因 X → X 自反X → Y ⇒ X → XY- 由 X → Z得 X → XZ- 但更直接方式是X → Y ⇒ X → Y自反增广不直接得并集→ 正确路径是1. X → Y已知2. X → Z已知3. 由增广律X → Y ⇒ XX → YX ⇒ X → XY因 XX X4. 同理X → XZ5. 然后利用传递性需中间项故实际教学中常将合并律视为增广传递的组合• 由 X → Y得 X → Y1• 由 X → Z得 X → Z2• 则 X → YZ 可通过如下两步- 先证 X → Y 和 X → Z ⇒ X → Y ∪ Z这本身是合并律定义- 标准推导依赖增广律 传递律 自反律i) X → Y ⇒ X → Y自反ii) X → Z ⇒ X → Ziii) 由增广律X → Y ⇒ XZ → YZiv) 但 X → Z ⇒ XZ ≡ X逻辑等价故 X → YZ。✅ 结论合并律可由 Armstrong 公理导出是有效推理规则。伪传递律Pseudotransitivity若 X → Y 且 WY → Z则 WX → Z。推导过程① X → Y 已知② WY → Z 已知③ 由增广律对①两边加 WWX → WY④ 由③ WX → WY 和② WY → Z根据传递律得WX → Z✅ 完整、严格仅使用增广律 传递律。补充说明还有其他常用规则如分解律DecompositionX → YZ ⇒ X → Y 且 X → Z由自反律 Y ⊆ YZ及增广律逆用或定义直接可得所有这些规则均不增加新信息仅帮助高效计算属性闭包或求最小覆盖。# 示例计算属性集闭包 X⁺用于候选键/范式判定defclosure(X,F):F: list of tuples (lhs, rhs), e.g., [(A, B), (B, C)]resultset(X)changedTruewhilechanged:changedFalseforlhs,rhsinF:ifset(lhs).issubset(result)andnotset(rhs).issubset(result):result|set(rhs)changedTruereturnresult