AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 人工智能训练师题库 题目详情
CB6C09EC34E00001C0C418901FB11A1A
人工智能训练师题库
4,855
多选题

3113.已知关系R具有属性A,B,C,D,E,F.假设该关系有如下函数依赖AB→C,BC→AD,D→E,CF→B,则下列依赖蕴含于给定的这些函数依赖的有().

A
B→C
B
AB→D
C
AB→E
D
AB→F

答案解析

正确答案:ABC

解析:

题目分析: 题干给出了关系模式 R(A, B, C, D, E, F) 及其上的函数依赖集: - AB → C - BC → AD - D → E - CF → B 要求判断哪些选项中的函数依赖是**由上述函数依赖集逻辑蕴含**的,即可以通过Armstrong公理系统(自反律、增广律、传递律)或闭包计算推导得出。 我们逐项分析各选项是否被蕴含。 --- **核心知识点回顾:** 1. **函数依赖的逻辑蕴含**:若从给定的函数依赖集 F 出发,能通过推理规则推出某个函数依赖 α → β,则称该依赖被 F 蕴含。 2. **属性集闭包 α⁺**:在函数依赖集 F 下,属性集 α 的闭包是指所有被 α 函数决定的属性集合。若 β ⊆ α⁺,则 α → β 成立。 3. 常用推理规则: - 传递律:若 α → β,β → γ,则 α → γ - 增广律:若 α → β,则 αγ → βγ - 分解律:若 α → βγ,则 α → β 且 α → γ --- 我们使用**属性闭包法**来验证每个选项。 --- ### 给定函数依赖集 F: F = { AB → C, BC → AD, D → E, CF → B } 注意:BC → AD 表示 BC → A 且 BC → D(由分解律) 所以可等价拆分为: - AB → C - BC → A - BC → D - D → E - CF → B --- ### 选项 A: B → C 判断是否存在 B → C? 计算 B⁺(B 在 F 下的闭包): 初始:B⁺ = {B} 查看是否有左部为 B 或被 B 包含的函数依赖: - AB → C:需要 A 和 B,当前只有 B,不满足 - BC → A/D:需要 C,没有 - D → E:无 D - CF → B:右部是 B,不影响 无法从 B 推出 C。 因此 B⁺ = {B},不包含 C ⇒ B → C 不成立。 但答案给出 ABC 正确,说明此处可能存在问题。 重新审视:是否遗漏了某些推导路径? 尝试进一步推理。 观察是否存在间接路径。 目前没有任何函数依赖的左部仅含 B 或被 B 所包含,除了 CF → B 是反过来的。 所以 B 无法推出任何其他属性。 结论:B → C **不被蕴含** 然而标准答案包含 A,说明我们需要更仔细检查是否有误。 再考虑是否存在隐含依赖。 例如,能否从已有依赖中推导出 B → C? 假设我们尝试利用其他依赖组合。 比如,已知 AB → C,如果我们有 B → A,则可结合得到 B → C(因为 B → A 且 AB → C,可通过增广和传递推出)。 那么是否存在 B → A? 计算 B⁺ 是否包含 A? 如前所述,B⁺ = {B},无法推出 A。 或者是否存在其他方式? 考虑 BC → A 和 BC → D。 如果我们有 B → C,则 BC 就变成 BB → ... 即 B → ...,但这正是我们要证明的,不能循环论证。 因此,**没有依据支持 B → C 成立**。 初步判断:选项 A 错误。 但题目答案为 ABC,包含 A,需再次核查。 或许存在笔误或理解偏差? 换一种思路:是否存在从 AB → C 和 BC → D 等推导出更强结论? 暂记疑问,先分析其他选项。 --- ### 选项 B: AB → D 判断 AB → D 是否成立。 计算 AB⁺(AB 的闭包) 初始:AB⁺ = {A, B} 步骤一:使用 AB → C ⇒ 加入 C → AB⁺ = {A, B, C} 现在有 A, B, C 步骤二:使用 BC → D(因 BC → AD ⇒ 包含 D)⇒ B,C 存在 ⇒ 加入 D → AB⁺ = {A,B,C,D} 步骤三:使用 D → E ⇒ 加入 E → AB⁺ = {A,B,C,D,E} 至此,AB⁺ = {A,B,C,D,E}(缺少 F) 由于 D ∈ AB⁺ ⇒ AB → D 成立 ✅ 选项 B 正确 --- ### 选项 C: AB → E 继续上面的闭包计算: AB⁺ 已包含 E(由 D → E,而 D ∈ AB⁺ ⇒ E ∈ AB⁺) 所以 E ∈ AB⁺ ⇒ AB → E 成立 ✅ 选项 C 正确 --- ### 选项 D: AB → F 检查 F 是否在 AB⁺ 中 前面计算 AB⁺ = {A,B,C,D,E},不含 F 是否存在任何能引入 F 的依赖? 现有依赖中,只有 CF → B 涉及 F,且它是右部为 B,左部含 F 无法从已有属性推出 F 也没有任何依赖可以生成 F 因此 F ∉ AB⁺ ⇒ AB → F 不成立 ❌ 选项 D 错误 --- 回到选项 A: B → C 我们已经确认 AB → C,但 B 单独不能推出 C 除非存在 B → A 或类似依赖 但我们没有这样的依赖 尝试计算 B⁺: B⁺ 初始 = {B} 检查所有依赖左部是否被 B 包含: - AB → C:AB ⊈ B,不行 - BC → A:BC ⊈ B,不行 - D → E:D ∉ B - CF → B:方向相反 无法扩展 ⇒ B⁺ = {B} C ∉ B⁺ ⇒ B → C 不成立 因此选项 A 不正确 但题目给出的答案是 ABC,意味着 A 被认为正确 这可能存在错误,或我们遗漏了什么 再次检查是否可以从给定依赖中推导出 B → C 尝试推导: 1. AB → C (已知) 2. BC → D (由 BC → AD 分解) 3. D → E (已知) 4. CF → B (已知) 能否构造出 B → C? 假设我们试图用伪传递或其他方法 例如,如果存在 X → B 且 XB → C,则可能推出 X → C?不适用 或者,若 B → X,X → C,则 B → C 但没有发现任何关于 B 能推出的依赖 另一个角度:是否存在冗余或等价变换? 考虑将 AB → C 与 BC → D 结合? AB → C BC → D D → E 仍无法消去 A 得到 B → C 除非 A 是多余的,但 AB → C 中 A 是否多余? 检查:若 B → C 成立,则 AB → C 可由增广律得到,但反过来不成立 要判断 AB → C 中 A 是否冗余,需验证 B → C 是否成立 —— 这正是问题所在,无法确认 因此不能认为 A 冗余 结论:**B → C 不能由给定函数依赖集推导出** 即选项 A 不正确

相关知识点:

给定函数依赖蕴含多种结果

题目纠错
人工智能训练师题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码