【问题标题】:Can I use my foreign key as my primary key in most of my tables?我可以在我的大多数表中使用我的外键作为我的主键吗?
【发布时间】:2016-08-06 09:54:49
【问题描述】:

我正在尝试创建一个在线航班预订网站的数据库结构。它只是我的一个项目。我想知道我可以使用外键作为表上的主键。

这是我的一张桌子的样子:

表名:Customer_Account 它有:Account_id (PK)、用户名和密码。

我的另一个表是:Customer_Info 它有:Account_id、名字、姓氏和其他个人信息。

我的想法是,如果我在我的 Customer_info 上使用 (Account_id) 可以吗 表作为我的主键,因为它是引用 Customer_Account 的 (Account_id) 的外键?

如果可能的话,当它是我真正需要该表的 ID 时,始终使用外键作为我的主键可以吗?

【问题讨论】:

    标签: mysql database foreign-keys primary-key shared-primary-key


    【解决方案1】:

    您的问题涉及称为“共享主键”的技术,因此我将该标签添加到您的问题中。

    简而言之,答案是肯定的。当您想在两个表之间强制建立一对一的关系时,您可以将外键作为主键。这在 IS-A 关系中经常出现,这是典型的类-子类(类型-子类型)情况。

    通常情况下,您可以通过将两个表合并为一个表来获得相同的结果。但是在某些情况下,子类数据差异很大,拥有两个或多个表会更令人满意。有关这种情况的讨论,请参阅“类表继承”。

    【讨论】:

    • 我会查找更多关于类表继承的信息以获取更多信息。无论如何感谢您的回答。这对我帮助很大。
    【解决方案2】:

    这是完全可以接受的,尽管我想知道为什么你首先需要两张桌子。如果每个(甚至大多数)客户都有额外的信息,更简单的方法是只保留customer_account 表中的所有列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2011-12-22
      相关资源
      最近更新 更多