zoukankan      html  css  js  c++  java
  • MySQL 超键 候选键 主键 外键是什么

    搬运出处: https://github.com/0voice/interview_internal_reference

    超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

    候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

    主键(primary key): 用户选作元组标识的一个候选键程序主键

    外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

    举例

    比如有如下数据:

    | 学号         | 姓名      | 性别 | 年龄 | 系别     | 专业

    |:---:          |:---:        |:---:    |:---:   |:---:        |:---:

    |20020612  | 李辉     | 男     |20     |计算机  |软件开发

    |20060613  | 张明     | 男     |18     |计算机  |软件开发 

    |20060614  | 王小玉 | 女     |19     |物理      |力学

    |20060615  | 李淑华 | 女     |17     |生物      |动物学

    |20060616  | 赵静     | 男     |21     |化学      |食品化学

    |20060617  | 赵静     | 女     |20     |生物      |植物学

     

    1. 超键

      在关系中能唯一标识元组的属性集称为关系模式的超键。

      于是我们从例子中可以发现 学号是标识学生实体的唯一标识。那么该元组的超键就为学号。

      除此之外我们还可以把它跟其他属性组合起来,比如:

      (学号性别)

      (学号年龄)

      这样也是超键.

    2. 候选键

      不含多余属性的超键为候选键。

      根据例子可知,学号是一个可以唯一标识元组的唯一标识,因此学号是一个候选键,实际上,候选键是超键的子集,比如 (学号,年龄)是超键,但是它不是候选键。因为它还有了额外的属性。

    3. 主键

      用户选择的候选键作为该元组的唯一标识,那么它就为主键。

      简单的说,例子中的元组的候选键为学号,但是我们选定他作为该元组的唯一标识,那么学号就为主键。

    4. 外键

      外键是相对于主键的,比如在学生记录里,主键为学号,在成绩单表中也有学号字段,因此学号为成绩单表的外键,为学生表的主键。

    总结

    主键为候选键的子集,候选键为超键的子集,而外键的确定是相对于主键的。

     

  • 相关阅读:
    java经典算法四十题
    java经典算法四十题
    数据库表的设计总结
    (转)Eclipse 远程调试 WebSphere Application Server (WAS)
    Oracle 与 DB2 数据类型分类对应说明
    使用 XSLT 将 XML 转换为 XHTML
    寓言一则
    操作系统底层工作的整体认识
    Mysq事务
    算法导论概率发生器
  • 原文地址:https://www.cnblogs.com/lab-zj/p/12167280.html
Copyright © 2011-2022 走看看