2016-08-06 33 views
2

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

这里我有多么表的一个样子:

表名:Customer_Account 有:ACCOUNT_ID(PK),用户名和密码。

而我的其他表格是:Customer_Info 它有:Account_id,名字,姓氏和其他个人信息。

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

如果这是可能的,那么当它是我真正需要该表的ID时,是否将外键用作我的主键?

回答

1

您的问题解决了称为“共享主键”的技术,因此我将该标记添加到了您的问题中。

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

通常情况下,您可以通过将两个表合并为一个表来获得相同的结果。但有些情况下,子类数据如此不同以至于有两个或更多表格更令人满意。有关这种情况的讨论,请参见“类表继承”。

+0

我会查看更多的类表继承以获取更多信息。无论如何感谢您的答案。这对我帮助很大。 – TheAsker101

2

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

+0

非常感谢! :) – TheAsker101

相关问题