超级键和复合键的区别

问题描述 投票:0回答:5

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

sql database database-design relational-database
5个回答
21
投票

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

  • A superkey 是任意一组组合在一起的唯一列。每个表通常有许多超级键,并且同一列可能由许多超级键共享。它们本身并不是很有用,但更像是识别候选键的心理工具(见下文)。
  • A 候选键是一个最小的超级键 - 如果删除任何列,它将不再是唯一的。候选键的数量通常比超级键少得多。
  • A key 只是候选键的同义词。
  • A composite1 key 是具有多个列的键。换句话说,它是一个具有多列的最小超级键。

还有几点:

  • 每个密钥都是唯一的,因此称其为“唯一密钥”是多余的。只需“钥匙”就足够了。
  • 在 DBMS 级别,通过 PRIMARY KEY 或 UNIQUE2 约束强制执行键。
  • 出于性能原因,索引通常出现在键(主键或唯一约束)下方。但是,尽管经常在一起,键和索引是不同的概念:键是一个逻辑概念(改变数据的含义),索引是一个物理概念(不改变数据的含义,只是性能)。

1又名。复合、复合或串联。

2 在 NOT NULL 列上。


11
投票

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

我将以 Employee 表为例:

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

要了解超级键和候选键的区别,我们首先检查一下其他类型的键是什么?

1。候选键: 是表中符合所有行唯一性的各个列。在 Employee 表中,EmployeeID 和 SSN 是候选键。

2。主键: 是您选择用于保持表中唯一性的列。在 Employee 表中,您可以选择 EmployeeID 或 SSN 列,EmployeeID 是更好的选择,因为 SSN 是一个安全值。

3.备用键: 主列以外的候选列,例如如果 EmployeeID 是 PK,则 SSN 将是备用键。

4。超级键: 如果您向主键添加任何其他列/属性,那么它就会成为超级键,就像 EmployeeID + FullName 是一个超级键。

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

参考


0
投票

A superkey 是一组一个或多个属性,这些属性组合起来使我们能够唯一地标识实体集中的实体。 例如,客户 ID 属性 实体集 customer 足以区分一个客户实体与另一个客户实体。因此,customer-id 是一个超级键。

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


0
投票

eferbthtryu6555555555555555555555555dmjyyfgfgfgfgfgfgfgfgfgrzesrzesrzesrzesrzesrzesrzesrzesrzesrzesrzesrzesrzesrzessanye,mmmmmmmmmmmj.jgbnxdfvgwee afffdnxb


-2
投票

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

如果超级键由多于一列组成,那么它也是复合键。

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

我没有看到“超级密钥”这个名称被过多使用:它通常被称为“唯一密钥”。

© www.soinside.com 2019 - 2024. All rights reserved.