【问题标题】:What are the different types of keys in RDBMS?RDBMS 中有哪些不同类型的键?
【发布时间】:2010-12-15 06:03:37
【问题描述】:

RDBMS 中有哪些不同类型的键?请在您的回答中附上示例。

【问题讨论】:

    标签: rdbms


    【解决方案1】:

    来自herehere:(在我搜索了你的标题之后)

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

    【讨论】:

      【解决方案2】:

      Ólafur 忘记了surrogate key

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

      【讨论】:

        【解决方案3】:

        (I) 超级键 – 用于唯一标识记录的属性或属性组合称为超级键。一张表可以有很多超级键。

        例如超级钥匙

        1. 身份证
        2. ID、姓名
        3. ID、地址
        4. ID,Department_ID
        5. 身份证、工资
        6. 姓名、地址
        7. 姓名、地址、部门 ID

        以此类推,任何可以唯一标识记录的组合都将是超级键。

        (II) Candidate Key – 可以定义为最小Super Key或不可约Super Key。换句话说,一个属性或属性的组合可以唯一地标识记录,但它的真子集都不能唯一地标识记录。

        例如候选键

        1. 身份证
        2. 姓名、地址

        对于上表,我们只有两个候选键(即不可约超级键)用于唯一标识表中的记录。 ID Key 可以唯一标识记录,类似地,名称和地址的组合可以唯一标识记录,但是名称和地址都不能用于唯一标识记录,因为我们可能有两个姓名相似的员工或两个来自同一所房子。

        (III) 主键 – 数据库设计者用来唯一标识表中每一行的候选键称为主键。主键可以由表的一个或多个属性组成。

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

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

        例如外键 - 假设我们有另一个表,即具有属性“Department_ID”、“Department_Name”、“Manager_ID”、“Location_ID”的部门表,其中 Department_ID 作为主键。现在 Employee 表(从属或子表)的 Department_ID 属性可以定义为外键,因为它可以引用 Departments 表(被引用或父表)的 Department_ID 属性,外键值必须与现有值匹配父表或为NULL。

        (V) 复合键 – 如果我们使用多个属性来创建一个主键,则该主键称为复合键(也称为复合键或连接键)。

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

        (VI) 备用键 – 备用键可以是除主键之外的任何候选键。

        例如备用键是“名称,地址”,因为它是唯一不是主键的其他候选键。

        (VII) Secondary Key——即使不是Super Key但仍可用于标识记录(不唯一)的属性称为Secondary Key。

        例如辅助键的名称可以是姓名、地址、工资、部门 ID 等,因为它们可以识别记录,但它们可能不是唯一的。

        【讨论】:

        • 非常感谢您的辛勤工作。例子令人兴奋。
        • 我非常感谢您的工作,它对我有很大帮助。清除了我所有的困惑。 :) :)
        • 在主键的示例中,这是什么意思 - “我们将把“ID”键视为主键,因为另一个键是多个属性的组合”?
        • @VishwasJain 这意味着另一个候选键是 {Name, Address} 即 2 个属性,因此仅使用 ID 更好和首选。
        【解决方案4】:

        还有一个 SURROGATE KEY:如果一个非素数属性依赖于另一个非素数属性,就会出现这种情况。那个时候你现在不需要选择哪个键作为主键来拆分你的表。在这种情况下,使用代理键而不是主键。通常这个键是系统定义的,并且总是有数值,并且它的值通常会为新的行自动增加。例如:ms 访问 = 自动编号 & 我的 SQL = 标识列 & oracle = 序列。

        【讨论】:

        • 首先上面提到了代理键,其次它在SQL Server中是一个标识,而在MySQL中是一个自增键。
        【解决方案5】:

        还有一个唯一键。 PRIMARY KEY 和 UNIQUE KEY 的主要区别在于 PRIMARY KEY 从不取 NULL 值,而 UNIQUE KEY 可能取 NULL 值。 另外,一张表只能有一个 PRIMARY KEY,而 UNIQUE KEY 可能不止一个。

        【讨论】:

          【解决方案6】:

          部分键:

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

          备用键:

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

          人工钥匙:

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

          复合键:

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

          自然键:

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

          【讨论】:

            【解决方案7】:

            分享一下我平时在网上阅读的笔记,希望对大家有所帮助

            候选密钥或可用密钥

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

            主键

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

            外键

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

            备用键或辅助键

            如果任何表有多个候选键,则从这些候选键中选择主键后,其余候选键称为该表的备用键。像这里我们可以通过一个非常简单的例子来理解备用键的概念。假设我们有一个名为 Employee 的表,它有两列 EmpID 和 EmpMail,它们都没有空属性和唯一值。所以这两列都被视为候选键。现在我们将 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 的所有属性在功能上都依赖于这些属性。

            部分密钥或鉴别密钥

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

            【讨论】:

              猜你喜欢
              • 2017-10-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-06-23
              • 2010-09-27
              • 2018-02-09
              • 2019-12-20
              相关资源
              最近更新 更多