RDBMS中有哪些不同类型的密钥?

时间:2009-11-10 21:51:46

标签: rdbms

RDBMS中有哪些不同类型的密钥?请在答案中加入示例。

7 个答案:

答案 0 :(得分:82)

(I)超级密钥 - 用于唯一标识记录的属性或属性组合称为超级密钥。一张桌子可以有很多超级钥匙。

E.g。超级钥匙

  1. ID
  2. ID,姓名
  3. ID,地址
  4. ID,Department_ID
  5. ID,Salary
  6. 姓名,地址
  7. 姓名,地址,Department_ID
  8. 因此,任何能够唯一识别记录的组合都将是超级密钥。

    (II)候选键 - 可以将其定义为最小超级密钥或不可缩减的超级密钥。换句话说,属性或属性组合唯一地标识记录但没有任何适当的子集可以唯一地标识记录。

    E.g。候选人密钥

    1. ID
    2. 姓名,地址
    3. 对于上表,我们只有两个候选密钥(即不可减少的超级密钥)用于唯一地从表中识别记录。 ID Key可以唯一地标识记录,类似地,Name和Address的组合可以唯一地标识记录,但是Name和Address都不能用于唯一地标识记录,因为我们可能有两个具有相似名称的员工或两个来自同一所房子。

      (III)主键 - 数据库设计者用于表中每行唯一标识的候选键称为主键。主键可以包含表的一个或多个属性。

      E.g。主键 - 数据库设计者可以使用其中一个候选键作为主键。在这种情况下,我们将“ID”和“名称,地址”作为候选键,我们将“ID”键视为主键,因为另一个键是多个属性的组合。

      (IV)外键 - 外键是一个基表中的属性或属性组合,指向另一个表的候选键(通常是主键)。外键的目的是确保数据的引用完整性,即只允许出现在数据库中的值。

      E.g。外键 - 让我们考虑另一个表,即具有属性“Department_ID”,“Department_Name”,“Manager_ID”,“Location_ID”的Department表,Department_ID作为主键。现在,Employee Table(依赖表或子表)的Department_ID属性可以定义为外键,因为它可以引用Departments表的Department_ID属性(引用表或父表),外键值必须与现有值匹配。父表或为NULL。

      (V)复合键 - 如果我们使用多个属性来创建主键,那么该主键称为复合键(也称为复合键或连锁键)。

      E.g。如果我们使用“名称,地址”作为主键,那么它将是我们的复合键。

      (VI)备用密钥 - 备用密钥可以是除主密钥之外的任何候选密钥。

      E.g。备用密钥是“名称,地址”,因为它是唯一不是主密钥的其他候选密钥。

      (VII)辅助密钥 - 甚至不是超级密钥但仍可用于识别记录(非唯一)的属性称为辅助密钥。

      E.g。辅助密钥可以是姓名,地址,薪水,部门_ID等,因为他们可以识别记录,但它们可能不是唯一的。

答案 1 :(得分:21)

来自herehere :(在我搜索你的头衔之后)

  
      
  • 备用键 - 备用键是未选择为主键的任何候选键
  •   
  • 候选键 - 候选键是一个字段或字段组合,可以充当该表的主键字段,以唯一标识该表中的每个记录。
  •   
  • 复合键 - 复合键(也称为复合键或连锁键)是由2个或更多属性组成的键。
  •   
  • 主键 - 主键是可用于标识表中唯一行的值。属性与之关联。主键的示例是社会安全号码(与特定人员相关联)或ISBN(与特定书籍相关联)。   在数据的关系模型中,主键是选择作为唯一标识关系中元组的主要方法的候选键。
  •   
  • 超级密钥 - 超级密钥在关系模型中被定义为关系变量(relvar)的一组属性,它认为在分配给该变量的所有关系中没有两个具有相同的元组(行)此集中属性的值。同样,超级密钥也可以定义为relvar的一组属性,relvar的所有属性都依赖于这些属性。
  •   
  • 外键 - 外键(FK)是数据库记录中的字段或字段组,指向在某些(通常是不同的)表中形成另一个数据库记录的键的键字段或字段组。通常,一个表中的外键是指另一个表的主键(PK)。通过这种方式,可以将信息链接在一起,这是数据库规范化的重要组成部分
  •   

答案 2 :(得分:9)

Ólafur忘了surrogate key

  

数据库中的代理键是建模世界中的实体或数据库中的对象的唯一标识符。代理键不是从应用程序数据派生的。

答案 3 :(得分:6)

还有一个独特的钥匙。 PRIMARY KEY和UNIQUE KEY之间的主要区别在于PRIMARY KEY从不采用NULL值,而UNIQUE KEY可能采用NULL值。 此外,表中只能有一个PRIMARY KEY,而UNIQUE KEY可能不止一个。

答案 4 :(得分:1)

还有一个SURROGATE KEY:如果一个非素数属性依赖于另一个非素数属性,则会出现这种情况。那个时候你现在不选择哪个键作为分割表的主键。在这种情况下,使用代理键而不是主键。通常,此键是系统定义的,并且始终具有数值,并且其值通常会自动递增以用于新行。例如:ms acces = auto number&我的SQL =身份栏& oracle = sequence。

答案 5 :(得分:1)

部分密钥:

这是一组属性,可以唯一地标识弱实体并且与同一所有者实体相关。它有时被称为判别者。

替代密钥:

除主键外的所有候选键都称为备用键。

人工密钥:

如果没有明显的密钥,无论是独立密钥还是复合密钥,那么最后一种方法是简单地创建一个密钥,方法是为每个记录或事件分配一个唯一的编号。然后这被称为开发人工密钥。

复合键:

如果没有单个数据元素唯一标识构造中的出现,则组合多个元素以为构造创建唯一标识符称为创建复合键。

自然键:

当构造中存储的一个数据元素用作主键时,它被称为自然键。

答案 6 :(得分:0)

分享我在阅读互联网时通常保留的笔记,我希望它可能对某人有帮助

候选钥匙或可用钥匙

候选键是表格的主键候选键。简单来说,我们可以理解,这种类型的密钥完全满足主键的所有要求,这些要求不是空的并且具有唯一记录,是主键的候选者。因此,密钥的类型被称为候选密钥。每个表必须至少有一个候选键,但同时可以有几个。

主键

被选为表的主键的这种类型的候选键被称为主键。主键用于标识表。每个表只有一个主键。在SQL Server中,当我们为任何表创建主键时,会自动为该列创建聚簇索引。

外键

外键是用于定义两个表之间关系的那些键。当我们想要实现两个表之间的关系时,我们使用外键的概念。它也被称为参照完整性。我们可以为每个表创建多个外键。外键通常是一个表中的主键,在另一个表中显示为第一个表与第二个表有关系的字段。换句话说,如果我们有一个表A,其主键X链接到表B,其中X是B中的字段,那么X将是B中的外键。

备用密钥或辅助

如果任何表具有多个候选键,则在从那些候选键中选择主键之后,其余候选键被称为该表的备用键。像这里一样,我们可以用一个非常简单的例子来理解备用密钥的概念。假设我们有一个名为Employee的表,它有两列EmpID和EmpMail,它们都没有null属性和唯一值。因此,两列都被视为候选键。现在我们将EmpID作为该表的主键,然后将EmpMail称为备用键。

复合键

当我们在多个列上创建密钥时,该密钥称为复合密钥。在这里,我们可以举一个例子来理解这个功能。我有一个表学生,它有两列Sid和SrefNo,我们在这两列上制作主键。然后,此密钥称为复合密钥。

自然键

自然键是一个或多个业务概念所独有的现有数据属性。对于Customer表,有两个候选键,在本例中为CustomerNumber和SocialSecurityNumber。链接http://www.agiledata.org/essays/keys.html

代理键

引入一个名为代理键的新列,这是一个没有商业意义的键。其中一个示例是图1中Address表的AddressID列。地址没有“简单”自然键,因为您需要使用Address表的所有列来为自己形成一个键(您可能能够根据你的问题域只使用Street和ZipCode的组合,因此在这种情况下引入代理键是一个更好的选择。链接http://www.agiledata.org/essays/keys.html

唯一键

唯一键是超级键 - 也就是说,在数据库组织的关系模型中,它是一组关系变量的属性,它保存在分配给该变量的所有关系中,没有两个不同的元组(行)与此集合中的属性具有相同的值

聚合或复合键

当组合多个列以形成唯一键时,它们的组合值用于访问每一行并保持唯一性。这些键称为聚合键或复合键。值未合并,使用其数据类型进行比较。

简单键

仅由一个属性制作的简单键。

超级密钥

超关键在关系模型中定义为关系变量(relvar)的一组属性,它认为在分配给该变量的所有关系中没有两个不同的元组(行)具有相同的值这个集合中的属性。同样,超级密钥也可以定义为relvar的一组属性,relvar的所有属性都依赖于这些属性。

部分密钥或判别密钥

这是一组属性,可以唯一地标识弱实体并且与同一所有者实体相关。它有时被称为判别者。