我可以在我的大部分表中使用我的外键作为我的主键吗?
Can I use my foreign key as my primary key in most of my tables?
我正在尝试制作在线航班预订网站的数据库结构。它只是我的一个项目。我想知道我可以在 table.
上使用外键作为我的主键
这是我的 table 之一的样子:
Table 姓名:Customer_Account
它有:Account_id (PK),用户名和密码。
我的另一个 table 是:Customer_Info
它有:Account_id、名字、姓氏和其他个人信息。
我的想法是,如果我在 Customer_info 上使用 (Account_id) 可以吗
table 作为我的主键,因为它是引用 Customer_Account 的 (Account_id) ?
的外键
如果可能的话,当外键是我真正需要的 ID 时一直使用外键作为我的主键可以吗table?
这是完全可以接受的table,虽然我想知道为什么你首先需要两个 table。如果每个(甚至大多数)客户都有额外的信息,一个更简单的方法是只包含 customer_account
table.
中的所有列
您的问题涉及称为 "shared primary key" 的技术,因此我将该标签添加到您的问题中。
简而言之,答案是肯定的。当您想要在两个 table 之间强制执行一对一关系时,您可以将外键设为主键。这在 IS-A 关系中经常出现,这是典型的 class-subclass(类型-子类型)情况。
通常情况下,您可以通过将两个 table 合并为一个 table 来获得相同的结果。但是有些情况下subclass的数据差异很大,有两个或多个table会更令人满意。有关这种情况的讨论,请参阅 "class table inheritance"。
我正在尝试制作在线航班预订网站的数据库结构。它只是我的一个项目。我想知道我可以在 table.
上使用外键作为我的主键这是我的 table 之一的样子:
Table 姓名:Customer_Account 它有:Account_id (PK),用户名和密码。
我的另一个 table 是:Customer_Info 它有:Account_id、名字、姓氏和其他个人信息。
我的想法是,如果我在 Customer_info 上使用 (Account_id) 可以吗 table 作为我的主键,因为它是引用 Customer_Account 的 (Account_id) ?
的外键如果可能的话,当外键是我真正需要的 ID 时一直使用外键作为我的主键可以吗table?
这是完全可以接受的table,虽然我想知道为什么你首先需要两个 table。如果每个(甚至大多数)客户都有额外的信息,一个更简单的方法是只包含 customer_account
table.
您的问题涉及称为 "shared primary key" 的技术,因此我将该标签添加到您的问题中。
简而言之,答案是肯定的。当您想要在两个 table 之间强制执行一对一关系时,您可以将外键设为主键。这在 IS-A 关系中经常出现,这是典型的 class-subclass(类型-子类型)情况。
通常情况下,您可以通过将两个 table 合并为一个 table 来获得相同的结果。但是有些情况下subclass的数据差异很大,有两个或多个table会更令人满意。有关这种情况的讨论,请参阅 "class table inheritance"。