2

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

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

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

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

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

如果这是可能的,那么当它是我真正需要该表的 ID 时,一直使用外键作为我的主键可以吗?

4

2 回答 2

2

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

于 2016-08-06T09:57:23.250 回答
2

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

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

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

于 2016-08-06T11:51:34.080 回答