【问题标题】:Can a primary key be equal to a different column?主键可以等于不同的列吗?
【发布时间】:2013-11-03 05:55:03
【问题描述】:

我知道主键必须是唯一的,但是主键是否可以巧合地等于同一张表中的不同列?

例如,我有 2 张桌子。一个表称为 person,其中包含有关人员的信息(ID、电子邮件、电话、地址、姓名)。另一张表是人员(ID、pID(person ID)、salary、position)。 在员工中,ID 列是主键,用于唯一标识员工。数字从 1 到 100。但是,pID(个人 ID)可能等于 ID。例如,员工 ID 可能是 1,它引用的 pID 可能等于 1。

这样好吗?

【问题讨论】:

    标签: sql


    【解决方案1】:

    主键的作用是唯一且可靠地标识每一行 - 因此,它必须是唯一的并且NOT NULL - 其他任何内容都无关紧要。

    如果您恰好有第二列具有完全相同的值 - 我想知道 为什么 是这种情况 - 但这绝不会对主键产生负面影响。

    【讨论】:

      【解决方案2】:

      表的主键必须是唯一的,不能为空。表之间的唯一性没有限制。这 100% 取决于您。

      【讨论】:

        【解决方案3】:

        是的。没有检查表中不同列之间的关系。

        您担心的限制甚至没有意义。假设您有一个包含IDnameyear_of_birth 列的人员表。它不允许 1975 年出生的人拥有ID = 1975

        【讨论】:

          猜你喜欢
          • 2011-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-11
          • 2010-12-18
          • 1970-01-01
          • 2013-07-12
          相关资源
          最近更新 更多