【数据库】码,超码,候选码与主码,外码

【数据库】码,超码,候选码与主码,外码_第1张图片

码的作用

用于区分不同元组、也就是不同行,此表中则为区分不同学生。

超码

超码 是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组;
e.g. 在上表中,{学号} 可唯一标识学生,所以学号是超码;有重名所以 {姓名} 不能作为唯一标识,但是 {学号,姓名} 组合可以为超码,同样,此表中 {年龄} 不可作为唯一标识,但是 {姓名,年龄} 也可以作为超码,但是这样非常不推荐。
所以综述,本表中超码为:{学号}{学号,姓名}{学号,年龄}{学号,姓名,年龄}{姓名,年龄}

候选码

候选码 与超码之间的关系好比正方形与长方形;候选码属于超码的一种特殊情况,而特殊则是特殊在最小的超码才能称为候选码。
e.g. 所以这么来看,上面的候选码中,只有 {学号}{姓名,年龄} 可以作为候选码。而形如:{学号,姓名} 则是因为学号可以单独作为唯一标识,所以 {学号,姓名} 组合可以化简,不是最小的超码,固不能作为候选码。

主码

主码 性质上与 候选码 类似,但是主码只有一个,而谁是主码则是由数据库设计者选中的,是用来在一个关系中区分不同元组的候选码。
e.g. 主码的选择非常重要,此表中主码会选 {学号} 作为主码的原因在于:
首先第一点,只有一个属性,最简;
其次第二点,虽然此时 {姓名,年龄} 也可以作为主码,但是若表中新增一名同学,不同学号相同姓名相同年龄,则会导致 {姓名,年龄} 不能成为主码、候选码以及超码。

外码 与 参照

【数据库】码,超码,候选码与主码,外码_第2张图片
左表中,主码为 {学号} ,右表中,主码为 {年龄}
而在左表中,也存在属性名称为:年龄
所以在左表中,年龄 为左表的外码;且 参照 右表,因为属性 年龄 在右表中为主码。

你可能感兴趣的:(【历史集合】研究生之前的札记,数据库架构)