SQL Server在两个表中使用与主键相同的Guid



我们有两个1:1关系的表。1个表应该引用另一个表,通常一个表将使用FK关系。由于存在1:1的关系,我们也可以直接在两个表中使用相同的Guid作为主键。

附加信息:由于数据是相当独立的,因此数据被拆分为2个表;人;以及";地址"-但在一个2之间存在明确的1:1关系的世界中。

根据我被建议的标签,我认为这被称为";共享主键";。

在两个表中使用与PK相同的Guid会产生不良影响吗?

要将注释中的信息合并为答案。。。

不,两个表共享PK没有不良影响。您仍然需要从第二个表创建FK引用,FK列将与PK列相同。

不过,你的例子";"人";以及";地址";在1:1的情况下不是最合适的。这种做法的常见用法是相互扩展的实体。例如:表";用户";可以保存所有用户的公共信息;候选";以及";招聘人员"每个表都可以扩展,所有表都可以共享相同的PK。编程语言表示也可以是相互扩展的类。

其他(类似的(例子是存储比基本表更详细信息的表;用户";以及";用户详细信息";。它是1:1,不需要引入额外的PK柱。

PK也是FK:的代码示例

CREATE TABLE [User]
(
id INT PRIMARY KEY
, name NVARCHAR(100)
); 
CREATE TABLE [Candidate] 
(
id INT PRIMARY KEY FOREIGN KEY REFERENCES [User](id)
, actively_looking BIT 
); 
CREATE TABLE [Recruiter]
(
id INT PRIMARY KEY
, currently_hiring BIT 
, FOREIGN KEY (id) REFERENCES [User](id)
); 

PS:如上所述,由于性能问题,GUID不是PK的最佳列,但这是另一个主题。

最新更新