我可以在大多数表中使用外键作为主键吗?



我试图使一个在线机票预订网站的数据库结构。这只是我的一个项目。我想知道我可以使用外键作为表上的主键。

我的一个表是这样的:

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

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

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

如果这是可能的,是否可以使用外键作为我的主键,当它是我真正需要的表的ID ?

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

简单地说,答案是肯定的。当您希望在两个表之间强制一对一关系时,可以将外键设置为主键。这在is - a关系中很常见,这是类-子类(类型-子类型)的典型情况。

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

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

相关内容

  • 没有找到相关文章

最新更新