关系型数据模型(库)中的键

本文介绍了关系型数据库中的关键概念,包括超键、候选键和主键。超键是指能唯一标识记录的列或列集,候选键是最小的超键,具有唯一性、最小性和非空性。主键是被选为主表唯一标识的候选键,应遵循选择原则,如尽可能小、不可变且无业务含义。此外,外键用于表示表间关系,引用其他表的候选键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在现在的关系型数据库中,存在着常用的几种键,举一个最常见的键: 主键,大家肯定都知道主键吧,

现在我们要介绍关系型数据库中的4中键:超键、候选键、主键、外键

1)超键:

一个列或者列集,唯一标识表中的一条记录。超键可能包含用于唯一标识记录所不必要的额外的列,我们通常只对仅包含能够唯一标识记录的最小数量的列感兴趣。

其实乍一看很难懂,其实是说法不太容易懂

我们来弄一张表来说明一下

student_idnamegradeclassage
00001A1218
00002C1117
00003F1316
00004G1418
00005H2216
00006Q2117
00007S2216
00008Z2219

一张student表 假设姓名没有重复的  学号(student_id) ,姓名都可以确定唯一一条记录,

学号+姓名的组合也可以确定一条记录,这三种都叫超键

2)候选键

仅包含唯一标识记录所必需的最小数量列的超键。表的候选键有三个属性:
唯一性:在每条记录中,候选键的值唯一标识该记录。
最小性:具有唯一性属性的超键的最小子集。
非空性:候选键的值不允许为空。


在我们的例子中,分公司编号是候选键,如果每个分公司的邮编都不同,那么邮编也可以作为分公司表的候选键。一个表中允许有多个候选键。

上面的超键中有3个,有2个值包含一个字段,有一个含有2个字段,超键中最少的组合(至少为1,且去掉任何一个字段都不再是超键)为候选键,上图的例子中2个只含一个字段的超键为候选键,那个带2个字段的超键由于去掉其中一字段依然是超键,所以其不是候选键。

 

3)主键和外键

主键和外键就不过多介绍了,直接放定义

主键:


主键的选择在关系数据模型中非常重要,很多性能问题都是由于主键选择不当引起的。在选择主键时,我们可以参考以下原则:
1.主键要尽可能地小。
2.主键值不应该被改变。主键会被其他表所引用。如果改变了主键的值,所有引用该主键的值都需要修改,否则引用就是无效的。
3.主键通常使用数字类型。数字类型的主键要比其他数据类型效率更高。
4.主键应该是没有业务含义的,它不应包含实际的业务信息。无意义的数字列不需要修改,因此是主键的理想选择。大部分关系型数据库支持的自增属性或序列对象
更适合当作主键。
虽然主键允许由多列组成,但应该使用尽可能少的列,最好是单列。

外键:

一个表中的一个列或多个列的集合,这些列匹配某些其他(也可以是同一个)表中的候选键。注意外键所引用的不一定是主键,但一定是候选键。当一列出现在两张
表中的时候,它通常代表两张表记录之间的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值