美文网首页
软考学习笔记-数据库中码、候选码、主码、超码

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

作者: 赵客缦胡缨v吴钩霜雪明 | 来源:发表于2023-04-18 11:35 被阅读0次
    学号 姓名 年龄
    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、超码包括候选码,候选码包括主码。

    相关文章

      网友评论

          本文标题:软考学习笔记-数据库中码、候选码、主码、超码

          本文链接:https://www.haomeiwen.com/subject/cgmhjdtx.html