我正在尝试建立在线航班预订网站的数据库结构。它只是我的一个项目。我想知道我可以使用外键作为我桌上的主键。
这是我的一张桌子的样子:
表名:Customer_Account 它有:Account_id(PK),用户名和密码。
我的另一张表是:Customer_Info 它有:Account_id,名字,姓氏和其他个人信息。
我想到的是,如果我在Customer_info上使用(Account_id),这是否可以 table作为我的主键,因为它是引用Customer_Account的外键(Account_id)?
如果这是可能的,那么当它是我真正需要该表的ID时,是否一直使用外键作为我的主键?
答案 0 :(得分:2)
这是完全可以接受的,但我必须想知道为什么你首先需要两张桌子。如果每个(甚至大多数)客户都有附加信息,那么更简单的方法就是将所有列都放在customer_account
表中。
答案 1 :(得分:1)
您的问题涉及称为“共享主键”的技术,因此我将该标记添加到您的问题中。
简而言之,答案是肯定的。如果要在两个表之间强制实施一对一关系,可以将外键作为主键。在IS-A关系中经常出现这种情况,这是典型的类 - 子类(类型 - 子类型)情况。
通常情况下,您可以通过将两个表组合到一个表中来实现相同的结果。但是有些情况下子类数据是如此不同,以至于拥有两个或更多表更令人满意。有关此情况的讨论,请参阅“类表继承”。