我可以在我的大多数表中使用我的外键作为我的主键吗?
Posted
技术标签:
【中文标题】我可以在我的大多数表中使用我的外键作为我的主键吗?【英文标题】: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 时,始终使用外键作为我的主键可以吗?
【问题讨论】:
【参考方案1】:您的问题涉及称为“共享主键”的技术,因此我将该标签添加到您的问题中。
简而言之,答案是肯定的。当您想在两个表之间强制建立一对一的关系时,您可以将外键作为主键。这在 IS-A 关系中经常出现,这是典型的类-子类(类型-子类型)情况。
通常情况下,您可以通过将两个表合并为一个表来获得相同的结果。但是在某些情况下,子类数据差异很大,拥有两个或多个表会更令人满意。有关这种情况的讨论,请参阅“类表继承”。
【讨论】:
我会查找更多关于类表继承的信息以获取更多信息。无论如何感谢您的回答。这对我帮助很大。【参考方案2】:这是完全可以接受的,尽管我想知道为什么你首先需要两张桌子。如果每个(甚至大多数)客户都有额外的信息,更简单的方法是只保留customer_account
表中的所有列。
【讨论】:
以上是关于我可以在我的大多数表中使用我的外键作为我的主键吗?的主要内容,如果未能解决你的问题,请参考以下文章