软考学习笔记-数据库中码、候选码、主码、超码

2023-04-18  本文已影响0人  赵客缦胡缨v吴钩霜雪明
学号 姓名 年龄
001 张三 14
002 赵四 15
003 王五 16
004 王五 16

码是可以确定一个元组的所有信息的属性名或属性名组。

码的作用:用于区分不同元组(也就是不同行),此表中则为区分不同学生。

ps:元组理解为一张表的某一行,属性理解为一张表的某一列,属性名就是列的名字(字段)。

例如在 { a, b, c, d } 中,

假设知道 a 的值就能确定 a, b, c, d 的值,

假设知道 c, d 的值就可以确定 a, b, c, d 的值,

那么 { a } 就是码,{ c, d } 就是码。

并且 { a, b }, { a, c }, { a, b, c }, { a, b, c, d } 等也都是码,因为它们也可以确定一个元组的所有值,即使很多余。

超码

超码 是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组;

在上表中,{学号} 可唯一标识学生,所以学号是超码;

有重名所以 {姓名} 不能作为唯一标识,但是 {学号,姓名} 组合可以为超码。

同样,此表中 {年龄} 不可作为唯一标识,但是 {姓名,年龄} 也可以作为超码。

所以综述,本表中超码为:{学号},{学号,姓名},{学号,年龄},{学号,姓名,年龄},{姓名,年龄}

候选码

候选码 与 超码 之间的关系好比正方形与长方形;候选码属于超码的一种特殊情况,而特殊则是特殊在最小的超码才能称为候选码

候选码的真子集中不存在码,候选码可以有多个。

所以这么来看,上面的候选码中,只有 {学号},{姓名,年龄} 可以作为候选码。

而形如:{学号,姓名} 则是因为学号可以单独作为唯一标识,所以 {学号,姓名} 组合可以化简,不是最小的超码,固不能作为候选码。

主码

主码 性质上与 候选码 类似,但是主码只有一个,而谁是主码则是由数据库设计者选中的,是用来在一个关系中区分不同元组的候选码。

主码就是主键的意思,主码是任意一个候选码。

主码的选择非常重要,此表中主码会选 {学号} 作为主码的原因在于:

首先第一点,只有一个属性,最简;

其次第二点,虽然此时 {姓名,年龄} 也可以作为主码,但是若表中新增一名同学,不同学号相同姓名相同年龄,则会导致 {姓名,年龄} 不能成为主码、候选码以及超码。

小结:

1、所有码都是一个集合,包括超码,候选码,主码。

2、所有可以用来在实体集中标识唯一实体的集合,都是超码。

3、如果任意超码的真子集不包括超码,则称其为候选码。

4、被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。

5、超码包括候选码,候选码包括主码。

上一篇下一篇

猜你喜欢

热点阅读