超级密钥和复合密钥之间的区别

时间:2014-06-06 11:36:40

标签: sql database database-design relational-database

我需要了解超级密钥和复合密钥之间的区别。我发现的例子让人更加困惑。你能简单地澄清一下有什么区别吗?感谢

4 个答案:

答案 0 :(得分:14)

接受的答案并不完全准确......

  • 超级密钥是组合在一起的任何列都是唯一的。每个表通常有许多超级密钥,并且许多超级密钥可以共享相同的列。它们本身并不是很有用,但它们更像是识别候选键的心理工具(见下文)。
  • 候选键是最小超级键 - 如果删除任何列,它将不再是唯一的。候选键通常明显少于超级键。
  • 只是候选键的同义词。
  • 复合 1 是具有多个列的键。换句话说,它是一个包含多列的最小超级键。

更多要点:

  • 每个密钥都是唯一的,因此将其称为“唯一密钥”是多余的。只需“关键”即可。
  • 在DBMS级别,通过PRIMARY KEY或UNIQUE 2 约束强制执行密钥。
  • 出于性能原因,索引通常出现在键(PRIMARY KEY或UNIQUE约束)下面。但是尽管经常在一起,密钥和索引是分开的概念:密钥是一个逻辑概念(改变数据的含义),索引是一个物理概念(不改变数据的含义,只改变性能)。

1 Aka。复合,复合或连接。

2 在NOT NULL列上。

答案 1 :(得分:3)

是的,我同意@Branko,接受的答案不准确且不清楚。

我将以Employee表为例:

CREATE TABLE Employee (
Employee ID, 
FullName, 
SSN, 
DeptID
);

知道差异b / w Super&候选键,我们先检查一下其他类型的键是什么?

<强> 1。候选键:是表中的单个列,它们符合所有行的唯一性。这里是Employee表EmployeeID&amp; SSN是候选密钥。

<强> 2。主键:是您选择在表中保持唯一性的列。在Employee表中,您可以选择EmployeeID或SSN列,EmployeeID是首选,因为SSN是安全值。

第3。备用密钥:其他主要列的候选列,如果EmployeeID是PK,那么SSN将是备用密钥。

<强> 4。超级密钥:如果您将任何其他列/属性添加到主键,那么它将成为超级密钥,例如EmployeeID + FullName是超级密钥。

<强> 5。复合键:如果表格没有任何符合Candidate键的单独列,则必须选择2列或更多列才能使行唯一。就像没有EmployeeID或SSN列一样,您可以将FullName + DateOfBirth设为Composite主键。但仍然存在重复行的可能性很小。

Reference

答案 2 :(得分:0)

超级密钥是一组一个或多个属性,这些属性共同使我们能够唯一地标识实体集中的实体。 例如,customer-id属性 实体集客户足以区分一个客户实体与另一个客户实体。因此,customer-id是一个超级钥匙。

复合键是表格的多个字段/列的组合。它可以是候选键,主键。

答案 3 :(得分:-3)

超级键唯一标识一行。它可以由一列或多列组成。复合键是由多个列组成的键。

如果Super Key由多个列组成,它也是一个复合词。

如果复合键唯一标识一行,则它也是一个超级键。

我没有看到名称&#39;超级密钥&#39;使用过多:它通常只被称为“唯一键”。