主键外键超键候选键区别以及联系

先说一下属性的定义:

表的每一行对应一个元组,表的每一列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的名字,称为属性(Attribute)。

再来看看几个键的定义:

超键:在关系模式中,能唯一标识元组的属性集称为超键。
候选键 :如果一个属性集能唯一标识元组,且有不包含多余属性,那么这个属性集称为候选键(候选键是没有多余属性的超键)
主键:关系模式中用户正在使用的候选键称主键(primary key)。一般,如不加说明,键是指主键。
外键:在关系模式R中,如果某属性集是其他模式的候选键,那么该属性集对模式R来说就是外键

主要说一下前三个键的区别:

网上有一个很经典的习题用于说明这三个键的区别:

学号 姓名 性别 年龄 系别 专业
20020612 李辉 男 20 计算机 软件开发
20060613 张明 男 18 计算机 软件开发
20060614 王小玉 女 19 物理 力学
20060615 李淑华 女 17 生物 动物学
20060616 赵静 男 21 化学 食品化学
20060617 赵静 女 20 生物 植物学

a){学号}
b){学号、姓名}
c){年龄、系别}
d){姓名、性别}
e){姓名、专业}

原文有解答,但或许有的人似乎看的不太懂。这里说一下我的理解:

这里的【学号 】 【 姓名】 【性别 】 【 年龄】 【 系别】 【 专业】所对应的每一个列称为一个域,其本身为列的属性,再啰嗦一点的说,比如下面这一列,

学号
20020612
20060613
20060614
20060615
20060616
20060617

其属性就为【学号】。属性集就是属性的集合,比如:{年龄、系别}

再比如下面这一行:

20020612 李辉 男 20 计算机 软件开发
就称为一条记录或者说是一个元组。

a选项{学号}可以唯一的标识一个元组,比如说我们用20060616就可以知道是性别为男,名字为赵静的人。由于没有多余的属性,所以{学号}既可以称为一个超键,也可以称为一个候选键。

b选项{学号、姓名}也可以唯一的标识一个元组,但是这个集合里的姓名属性是不必要的,也就是多余的,即如果没有【姓名】属性,那么这个集合

{学号、姓名}也可以唯一确定一个元组。由于有多余的属性,所以{学号、姓名}可以称为超键,但是不能称为候选键。

c,d,e选项均可以唯一的标识一个元组,并且其中每一个属性均是必须的,去掉任意一个属性,那么其所在的集合便不能唯一的标识一个元组,所以c,d,e 均可以称为超键,也可以称为候选键。

所以这道题中,应该选b。

主键就是在候选键中任意选一个键。

总结:

候选键可以称之为超键,但超键不一定可以称为候选键。候选键的属性一定不多余,但超键的属性不一定均有用。用集合的关系来说就是候选键隶属于超键,而主键为候选键中的一个元素。

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值