【问题标题】:Is having the foreign key as the primary key a good idea in this situation?在这种情况下,将外键作为主键是个好主意吗?
【发布时间】:2017-04-24 14:50:45
【问题描述】:

我有一个主用户表,其中包含用户的一些常见属性(姓名、电子邮件、电话),然后我还有 2 个表(比如说 x 和 y),其中包含两种类型用户的不同属性。你可能会说 (x1, x2, x3) 和 (y1, y2, y3)。一个用户可能只有一种类型。我在 x 和 y 表中有一个“user_id”列和一个主键列。 'user_id' 列引用了用户表中的 'id' 列。如果我删除 x 和 y 表中的“id”列(用作主键)并使用“user_id”列作为主键和外键,是否正确。我正在使用 postgres 9.6。

【问题讨论】:

  • One user may only be of one type. 这可能会使事情变得有点复杂,因为 x 和 y 都需要排除约束来禁止在另一个 (y,x) 表中存在相同的键。

标签: mysql sql database postgresql


【解决方案1】:

你的 scenario 非常好,没问题。它在数据库术语中被称为超类型和子类型。

要了解更多信息,请访问链接。

http://sqlmag.com/t-sql/sql-design-supertypes-and-subtypes

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多