求关系模式的候选码,主属性和非主属性(数据库系统)

候选码是什么?

简单来说,候选码是一组属性,可以由这组属性通过函数依赖推出其他属性

一般而言,求的候选码是最简候选码(属性尽可能少)


方法论

求候选码:

① 查看不在函数依赖中的属性,这些属性必须在候选码中

不在函数依赖的属性,意味着不能通过函数依赖推出它

因此要包含在候选码里面,只能自己推出自己

② 查看函数依赖中,只出现在左边 或 右边的属性

只在Left:能够推出别人,别人推不出自己——必须在候选码里面,自己推出自己

只在Right:推不出任何人,不在候选码里面(因为要求最简,只在Right的是冗余)

③ 暂时得到一个集合 X X X ,里面的元素在候选码里面,考虑:

该集合 X X X 是否就是候选码?——求闭包,看能不能直接推出其他属性

如果不是,进行第四步:组合

④ 组合,把剩余的属性一个一个地放进 X X X,形成新的集合 X 1 , X 2 ⋯ X_1,X_2\cdots X1,X2

X 1 , X 2 ⋯ X_1,X_2\cdots X1,X2 的闭包,看能不能直接推出其他属性

如果都不行,重复 ④ 操作,继续添加扩充

⑤ 最终得到所有候选码



求主属性、非主属性

在候选码里面出现过的属性,就是主属性(求候选码的并集)

不是主属性的就是非主属性



例题

image-20240504111149108

参考:求关系模式的候选码 - 碎了的冰 - 博客园 (cnblogs.com)

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值