密钥,超级密钥,最小超级密钥,候选密钥和主密钥之间的差异

时间:2011-08-05 03:24:41

标签: key terminology database-schema

我是MySQL新手,我对我遇到的不同术语感到困惑。我试着谷歌搜索答案,但结果真的令人困惑,当我尝试理解它似乎他们是相同的东西。

密钥,超级密钥,最小超级密钥,候选密钥和主密钥之间究竟有什么区别?

8 个答案:

答案 0 :(得分:70)

我在这里复制粘贴我收集的一些信息

<强>关键 键是单个或多个字段的组合。其目的是根据需要从表中访问或检索数据行。密钥在表中定义,以快速平滑地访问或排序存储的数据。它们还用于在不同表之间创建链接。

密钥类型

主键 唯一标识关系中的行或记录的属性或属性组合称为主键。

辅助密钥 作为检索基础的字段或字段组合称为辅助密钥。辅助密钥是非唯一字段。一个辅助键值可以引用许多记录。

候选键或备用键 关系只能有一个主键。它可能包含许多可用作主键的字段或字段组合。一个字段或字段组合用作主键。未用作主键的字段或字段组合称为候选键或备用键。

复合键或连接键 由两个或多个属性组成的主键称为复合键。

排序或控制键 用于对存储数据进行物理排序的字段或字段组合,称为排序键。它也是已知的控制键。

超级密钥是可以唯一用于标识数据库记录的属性组合。一个表可能有很多超级密钥。候选键是超级键的特殊子集,其中没有任何无关信息。

超级密钥的示例: 想象一下包含字段<Name><Age><SSN><Phone Extension>的表格。该表有许多可能的超级键。其中三个是<SSN><Phone Extension, Name><SSN, Name>。在列出的那些中,只有<SSN>是候选键,因为其他键包含不唯一标识记录所必需的信息。

外键 外键是关系中的属性或属性组合,其值与另一个关系中的主键匹配。创建外键的表称为依赖表。外键所引用的表称为父表。

答案 1 :(得分:21)

我一直觉得很难记住所有钥匙;所以我保持下面的笔记方便,希望他们帮助别人! 如果可以改进,请告诉我。

  • :唯一标识关系表中实体/记录的属性或属性组合。

  • PK :一个唯一且不为null的密钥。它是其中之一 候选钥匙。

  • 外键:FK是一个表(子)中的一个键,它唯一地标识另一个表(父)的行。子表中的FK不是唯一的。它是父表中的候选键。保持参照完整性,因为FK中的值作为父表中PK的值出现,否则为NULL。

  • 唯一键:唯一可能为NULL的键

  • 自然键:OLTP中的PK。它可能是OLAP中的PK。

  • 代理键:OLAP中的代理PK充当了 在OLTP中替代PK。内部生成的人工密钥 OLAP。

  • 复合键:PK由多个属性组成

  • SuperKey :可以唯一用于标识数据库记录的密钥, 包含不必唯一标识的额外属性 记录。

  • 候选键:候选键可以唯一使用 识别没有任何无关数据的数据库记录。他们不是 空虚而独特。这是一个最小的超级钥匙。

  • 备用密钥:非主键的候选密钥称为备用密钥。

  • 带有无关数据的候选键:考虑一下 可用于标识Employee表中的记录但是候选者 只有密钥就足以完成这项任务。所以 成为无关的数据。

  

请注意PK,外键,唯一键,自然键,代理键,   Composite Key定义为Database对象;哪里的自然键   是OLTP中的PK,可以是目标OLAP中的PK。对于其余的   密钥,由DB设计师/架构师决定是否   需要强制执行唯一/非空/参照完整性约束或   不

下面我尝试使用集合论来简化密钥w.r.t的成员资格的表示。彼此。

key = { All of the below keys   }
PK  = { PK  }
Foreign Key = { Key with Not Null constraint    }
Unique Key  = { {Candidate Key/s}, {attributes containing NULL} }
Natural key = { PK  }
Surrogate Key   = { PK  }
Composite Key   = { PK  }
Super Key   = { {Candidate Key/s}, {Candidate Key/s with Extraneous data}   }
Candidate Key   = { PK, {Alternate Key/s}   }
Alternate Key   = { {Candidate Keys} - PK   }
Candidate Key/s with Extraneous data    = {     }

我在下面总结了它:

Database Keys

备注:an-overview-of-the-database-keys-primary-key-composite-key-surrogate-key-et-al

答案 2 :(得分:1)

主键是超级键的子集。哪个是唯一定义的,其他字段依赖于它。在表中,它们可以只是一个主键,而休息子集是候选键或备用键。

答案 3 :(得分:1)

超级键 - 唯一定义关系中元组的属性或属性集。但是,超级密钥可能包含唯一标识不需要的其他属性。

候选键 - 一个超级键,使得没有适当的子集是关系中的超级键。因此,基本上有两个属性:每个候选键唯一地标识关系中的元组; &安培; 组合键的正确子集没有唯一性属性

复合键 - 当候选键由多个属性组成时。

主键 - 选择用于在关系中唯一标识元组的候选键。

备用密钥 - 不是主键的候选密钥。

外键 - 关系中与某个关系的候选键匹配的属性或属性集。

答案 4 :(得分:1)

主要基于已接受的答案,但通过一些调整以更好地适应某些课程中教授的定义:

  • :一组$ \ ge1 $列。
  • 超级密钥:$ \ supseteq $候选密钥的密钥。
    • 因此,超级密钥必须包含$&gt; 1 $ columns。
    • 最小超级密钥 $ \ equiv $ 候选密钥:可以唯一标识表格中每一行的密钥。
    • 主键:选择的候选键。
    • 辅助密钥/备用密钥:未选择候选密钥。
  • 搜索键:用于查找记录的密钥。
  • 复合键连接键:包含$&gt; 1 $列的键。
    • 通常暗示&#34;复合主键&#34;,虽然&#34;复合备用键&#34;也是一件事。
  • 排序控制键:用于对存储数据进行物理排序的密钥。
  • 外键一个表中与另一个表的主键匹配的键。
    • 将外键所在的表称为从属表。
    • 外键引用的表称为父表。

答案 5 :(得分:0)

超级钥匙:

用于唯一标识数据库中元组的属性或属性集。

候选钥匙:

  1. 最小超级密钥是候选密钥
  2. 可以是一个或多个
  3. 潜在主键
  4. not null
  5. 属性或属性集,用于唯一标识DB中的记录
  6. PRIMARY KEY:

    1. 用于唯一标识DB中记录的候选键之一

    2. not null

答案 6 :(得分:0)

超级密钥:超级密钥是一组一个或多个属性,其值唯一地标识关系中的元组。

候选键:候选键可以定义为超级键的最小子集。在某些情况下,候选键不能单独使用,因为只有一个属性是最小子集。例如,

员工(id,ssn,name,addrress)

这里候选键是(id,ssn),因为我们可以使用id或ssn轻松识别元组。通过,超级密钥的最小子集是id或ssn。但是他们俩都可以被视为候选人。

主键:主键是候选键之一。

  

示例:   学生(身份证,姓名,部门,结果)

     

下面

     

超级密钥:{Id,Id + Name,Id + Name + Dept}因为超级密钥是属性集。

     

候选键:Id因为Id本身就是super的最小子集   键。

     

主键:Id,因为Id是候选键之一

答案 7 :(得分:-1)

<强>超密钥

A superkey is a combination of attributes that can be uniquely used to identify a 
database record. A table might have many superkeys.Candidate keys are a special subset
of superkeys that do not have any extraneous information in them.

Examples: Imagine a table with the fields <Name>, <Age>, <SSN> and <Phone Extension>.
This table has many possible superkeys. Three of these are <SSN>, <Phone Extension, Name>
and <SSN, Name>.Of those listed, only <SSN> is a **candidate key**, as the others
contain information not necessary to uniquely identify records.