候选键或超级键

时间:2017-07-29 07:00:41

标签: sql database mysqli rdbms

考虑一个具有不同列的关系表,您将其称为唯一且非空值,超级密钥或候选密钥的集合?

2 个答案:

答案 0 :(得分:0)

这将解释它们之间的区别,从而帮助您确定这是候选键还是超级键

超级密钥是一组或多个列,用于唯一标识表中的行。

从超级密钥集中选择

候选密钥,我们在选择候选密钥时唯一要注意的事项是:它不应该有任何冗余属性。这就是他们被称为最小超级密钥的原因。

Employee表中有三列:Emp_Code,Emp_Number,Emp_Name

超级键:

以下所有集合都能够唯一标识员工表的行。

{Emp_Code}
{Emp_Number}
{Emp_Code, Emp_Number}
{Emp_Code, Emp_Name}
{Emp_Code, Emp_Number, Emp_Name}
{Emp_Number, Emp_Name}

候选键:

如上所述,它们是没有冗余属性的最小超级密钥。

{Emp_Code}
{Emp_Number}

作为摘要

超级密钥是唯一标识行的一组列。候选键是唯一标识行的MINIMAL列。所以基本上超级密钥候选密钥,其中包含额外的不必要的列。

希望这有用:)

答案 1 :(得分:0)

我希望这会对你有所帮助

超级密钥在数据库组织的关系模型中定义为关系变量的一组属性,它保持在分配给该变量的所有关系中,没有两个具有相同值的不同元组(行)对于此集合中的属性。[1]超级密钥可以定义为关系模式的一组属性,模式的所有属性都依赖于这些属性。

所有属性的集合都是一个简单的超级密钥,因为在关系代数中不允许重复行。

如果属性集K是关系R的超级密钥,则R在K上的投影始终与R本身具有相同的基数。

超级键是表中的一组属性,其值可用于唯一标识元组。候选键是识别元组所必需的最小属性集;这也被称为最小超级钥匙。给定一个由employeeID,name,job和departmentID属性组成的员工模式,我们可以将employeeID与该表的任何或所有其他属性结合使用,以唯一地标识表中的元组。此模式中的超级密钥示例包括{employeeID,Name},{employeeID,Name,job}和{employeeID,Name,job,departmentID}。最后一个示例称为普通超级密钥,因为它使用此表的所有属性来标识元组。

在真实数据库中,我们不需要所有这些属性的值来标识元组。根据我们的例子,我们只需要集合{employeeID}。这是一个最小的超级键 - 即可用于标识单个元组的最小属性集。 employeeID是候选密钥。

相关问题