【问题标题】:Difference between Primary Key, Unique Key and candidate key主键、唯一键和候选键的区别
【发布时间】:2011-04-06 17:34:31
【问题描述】:

主键、唯一键和候选键有什么区别?

【问题讨论】:

    标签: database terminology


    【解决方案1】:

    【讨论】:

    • 问题想要它们之间的具体区别。
    【解决方案2】:

    候选键是一个最小(即不可约)键,唯一键是一个 pleonasm,主键是一个过时的概念,从人们认为一个键可能比任何其他人。

    【讨论】:

    • 候选键可以复合吗?我很困惑,因为有些消息来源说它应该是单列,有些人说它可以是复合的?
    • 键可以是复合的。他们没有错。如果属性的数量变得相当大(想想,4 个或更多),那么您可能开始遇到实际的缺点,但即便如此,它们仍然没有任何问题,在基础理论层面。
    【解决方案3】:

    复合键是具有多于 1 列的主键。例如考虑学生和课程之间的多对多关系。这里我们需要另一个表,比如说 studentcourses。

    此 studentcourses 表将包含 student_id 和 course_id 作为其列。这将形成您的复合键。

    候选键是一组列,可以唯一标识表中的值,并且可以充当唯一键。这些候选键中的一个将成为主键,其余的将成为备用键。

    Unique key 顾名思义,用于唯一标识表中的一个值。例如 Emp_id 等。每个候选键都将充当唯一键。唯一键永远不能是 NULL 值。

    【讨论】:

      【解决方案4】:

      候选键 – 候选键可以是任何列或可以作为数据库中唯一键的列组合。一张表中可以有多个候选键。每个候选键都可以作为主键。

      主键 – 主键是唯一标识记录的列或列组合。只有一个候选键可以是主键。 在选择主键时需要非常小心,因为不正确的选择会对数据库架构师和未来的规范化产生不利影响。对于有资格作为主键的候选键,它应该是非 NULL 并且在任何域中都是唯一的。我经常观察到主键很少更改。我希望收到您关于不更改主键的反馈。

      For more articles

      【讨论】:

        【解决方案5】:

        超级键是唯一标识一条记录的一个或多个列(即属性)的集合。

        候选键是最小的超级键。(这意味着我们不能从中删除任何属性,否则它将不再是超级键)。

        主键是任意选择的候选键。必须只有且只有一个主键。我们可以选择任何候选键作为主键。 其他未被选为主键的候选键称为备用键。

        如果主键多于一列(或属性),则称为复合键。

        【讨论】:

        • 想知道你对“唯一键”的看法!!
        • 唯一键允许 NULL 值。但是,主键或候选键不允许 NULL 值。
        【解决方案6】:

        候选键 - 它是一个可以唯一标识特定行或数据库表实例的所有列的列。您的护照 ID 是候选密钥的一个很好的示例,使用此 ID 时,您可以检索与该特定人员相关的人名、姓氏和其他详细信息。

        主键 - 特定数据库表上可能有几个候选键,它们是唯一的,可用于标识表中的特定实例,例如车辆登记号、底盘号、发动机序列号等……但请记住,只能有一个候选键用作主键。 候选键与主键之间的区别:- ) 主键和候选键都可以唯一标识数据库表中的记录。

        2) 主键和候选键都有约束 UNIQUE 和 NOT NULL。

        3) 主键或候选键可以是单列,也可以是表中多列的组合。

        【讨论】:

        • 这是一个不完整的答案。任何地方都没有提到唯一键。
        【解决方案7】:

        所有答案都缺少物理表示,其中一些不完整。所以这是图形表示的区别


        说明

        超级密钥

        超级键是一组一个或多个键,可用于唯一标识表中的一条记录。

        示例:主键、唯一键、备用键是超级键的子集。

        候选键

        候选键是一组一个或多个字段/列,可以在表中唯一标识一条记录。一张表中可以有多个候选键。每个候选键都可以作为主键。

        示例:在上图中,IDRollNoEnrollNo 是候选键,因为这三个字段都可以作为主键。

        主键

        主键是一组一个或多个表的字段/列,用于唯一标识数据库表中的一条记录。它不能接受空值、重复值。主键只能有一个候选键。

        备用键

        备用键是可以用作主键的键。基本上它是一个候选键,目前没有被用作主键。

        示例:在上图中,当我们将ID 定义为主键时,RollNoEnrollNo 成为备用键。

        复合/复合键

        复合键是表格中多个字段/列的组合。可以是候选键、主键。

        唯一键

        Uniquekey 是一个表的一个或多个字段/列的集合,用于唯一标识数据库表中的一条记录。它类似于主键,但它只能接受一个空值,并且不能有重复值。如需更多帮助,请参阅文章Difference between primary key and unique key

        外键

        外键是数据库表中的一个字段,它是另一个表中的主键。它可以接受多个空的、重复的值。如需更多帮助,请参阅文章Difference between primary key and foreign key

        示例:我们可以在 Employee 表中有一个 DeptID 列,它指向一个部门表中的 DeptID 列,它是一个主键。

        source

        【讨论】:

        • 以及几乎 - FOREIGN KEY 约束不必只链接到另一个表中的 PRIMARY KEY 约束;它也可以定义为引用另一个表中唯一约束的列。
        • @Manoz 候选键、唯一键和复合键有什么区别?您已经为这三个术语编写了类似的定义。请解释。提前致谢。
        猜你喜欢
        • 2012-03-22
        • 2011-09-16
        • 1970-01-01
        • 2011-10-20
        • 2012-09-30
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多