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

Bob*_*Bob 6 sql database database-design relational-database

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

Bra*_*vic 14

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

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

几点:

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

1阿卡.复合,复合或连接.

2在NOT NULL列上.


小智 6

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

我将以Employee表为例:

CREATE TABLE Employee (
Employee ID, 
FullName, 
SSN, 
DeptID
);
Run Code Online (Sandbox Code Playgroud)

要了解黑白超级键和候选键的区别,让我们首先检查一下其他类型的键吗?

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

2.主键:是您选择用来维护表中唯一性的列。在Employee表中,您可以选择EmployeeID或SSN列,EmployeeID是首选,因为SSN是安全值。

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

4.超级键:如果您将其他任何列/属性添加到主键,则它将变成超级键,例如EmployeeID + FullName是超级键。

5.复合键:如果表中没有任何单独的列符合候选键的条件,则必须选择2列或更多列以使行唯一。就像没有EmployeeID或SSN列一样,您可以将FullName + DateOfBirth用作复合主键。但是仍然存在重复行的可能性很小。

参考