从关系R的函数依赖确定主键:我的推导为何出错?
你的推导错误分析
核心错误:无依据替换函数依赖的左部
你把BC->AD等价于AA->AD完全是错误的,这两个函数依赖没有任何等价关系。BC和AA(也就是单个属性A)是完全不同的属性集合,函数依赖的左部是特定的属性组合,不能随意替换,除非能通过已有的函数依赖推导出BC和A等价(显然这里做不到)。正确推导两个主键的过程
主键的定义是:属性集的闭包能覆盖关系中的所有属性(即闭包等于{A,B,C,D})。- 计算
A的闭包:根据A->BCD,直接可得A+ = {A,B,C,D},所以A是主键。 - 计算
BC的闭包:根据BC->AD,BC可以推导出A和D;再加上BC本身的B和C,以及D->B(但B已经存在),最终BC+ = {B,C,A,D},覆盖了所有属性,所以BC也是主键。
- 计算
你推导时的逻辑漏洞
你错误地忽略了BC作为独立属性集的闭包能力,仅凭A是主键就否定了BC的主键资格,还无依据地替换了函数依赖的左部,这才导致结论错误。
内容的提问来源于stack exchange,提问作者ArtificialCode
相关产品推荐
相关产品推荐

