数据库系统概念:码

码, 即key, 用于区分给定关系中的不同元组

下面对码的概念进行介绍

  • 超码(super key)

    超码是一个或多个属性的集合,将这些属性组合在一起可以唯一的标识一个元组

  • 候选码(candidate key)

    候选码是超码的子集,因为超码中可能会包含一些不必要的元素,去掉这些元素后,也能够唯一地标识出某个元组,如果一个超码去掉任何一个元素之后就不能够唯一标识出元组,那么该超码就被成为候选码

  • 主码(primary key)

    候选码可能会有多个,假设一个关系中{ID}和{name, dept_name}都能够唯一标识出元组,那么他们都可以被作为候选码,将被数据库设计者选中而作为实际候选码的候选码称为主码

    • 主码的性质

      • 每个表中必须有且仅有一个主码

      • 主码必须的是唯一的,不能重复,这也被称为主码约束

      • 主码的创建需要依靠索引,如果在创建一个表时没有已经建好的索引的话,mysql会自动建立一个唯一索引

  • 外码约束

    • 一个例子

      假定有如下两个关系

    1

    2

    instructor关系中包含dept_name属性,department关系中包含主码dept_name,如果instructor关系中某个元组的dept_name并不出现在department关系中,那么这是没有意义的

    ​ 为了使两个关系之间的联系具有意义,所以需要对它们进行外码约束

    • 概念

      假定有两个关系r1, r2, r1中的某个属性集为A, r2中主码为B, 在任何数据库实例中,如果r1中的某个元组对A的取值也必须是r2中某个元组对B的取值,那么这两个关系满足从r1关系的A属性集到r2关系的主码B的外码约束

      简而言之,外码约束就是得让属性的值是合法的值

    • A属性被称为从r1引用r2的外码(foreign key),r1被称为该外码约束的引用关系,r2被称为该外码约束的被引用关系

      记忆: 被引用关系的主码是引用关系的外码

  • 引用完整性约束

    在外码约束中,被引用关系属性集必须是主码,引用完整性约束则放松了该条件,即被引用属性可以是任意一个指定属性,但是该约束在当今数据库系统中使用的不多


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!