【发布时间】:2014-07-27 16:04:34
【问题描述】:
我需要了解超级键和复合键的区别。我发现的例子更加混乱。你能简单地澄清一下有什么区别吗?谢谢
【问题讨论】:
标签: sql database database-design relational-database
我需要了解超级键和复合键的区别。我发现的例子更加混乱。你能简单地澄清一下有什么区别吗?谢谢
【问题讨论】:
标签: sql database database-design relational-database
接受的答案并不完全准确...
还有几点:
1 又名。复合、复合或串联。
2 在 NOT NULL 列上。
【讨论】:
是的,我同意@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 作为复合主键。但重复行的可能性仍然很小。
【讨论】:
superkey 是一组一个或多个属性的集合,它们使我们能够唯一地标识实体集中的实体。 例如,customer-id 属性 实体集客户足以区分一个客户实体与另一个客户实体。因此,customer-id 是一个超级键。
复合键是一个表格的多个字段/列的组合。可以是候选键、主键。
【讨论】:
超级键唯一标识一行。它可以由一列或多列组成。复合键是由多个列组成的键。
如果超级键由多个列组成,则它也是复合键。
如果复合键唯一标识一行,它也是超级键。
我没有看到过多使用“超级密钥”这个名称:它通常只是称为“唯一密钥”。
【讨论】: