You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于函数依赖最小键的疑问:为何{a,f}不是正确最小键?

关于关系模式最小候选键的推导解析

咱们一步步拆解这个问题,搞清楚到底哪里出了偏差~

首先明确最小候选键的核心定义:能唯一确定关系中所有属性的最小属性集合——既要满足闭包覆盖全部属性,又不能去掉任何一个属性(否则就无法覆盖全属性)。

先把给定的函数依赖列出来,方便推导:

  • A → B,C,D
  • A,D → E
  • E,F,G → H
  • F → G,H

第一步:计算单个属性的闭包

  1. 计算A的闭包(A⁺):
    • 由A → B,C,D,A⁺初始包含{A,B,C,D}
    • 再看A,D → E:因为A已经能推导出D,这个依赖的左部条件其实已经被A满足了,因此E也能被A推导出来。最终A⁺ = {A,B,C,D,E}
  2. 计算F的闭包(F⁺):
    • 由F → G,H,直接得到F⁺ = {F,G,H}

第二步:计算{A,F}的闭包

把A⁺和F⁺合并,得到{A,B,C,D,E,F,G,H}——这已经完全覆盖了关系中的所有属性(a,b,c,d,e,f,g,h)。

第三步:验证最小性

  • 如果去掉A,只剩{F}:F的闭包只能覆盖{F,G,H},无法得到其他属性,所以A不能去掉
  • 如果去掉F,只剩{A}:A的闭包只能覆盖{A,B,C,D,E},无法得到F、G、H,所以F不能去掉

所以**{A,F}确实是符合要求的最小候选键**,而所谓的{A,F,E}是冗余的——因为E已经能由A推导出来,属于非主属性,把E加入候选键后,它就不再是“最小”的了(去掉E后,{A,F}依然能确定所有属性)。

可能的误解点在于对A,D → E的理解:有人会误以为必须同时拥有A和D才能推出E,但实际上A已经能推导出D,所以单独的A就满足这个依赖的左部条件,不需要额外的D,更不需要把E放进候选键里。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:08:51