簡體   English   中英

SQL 服務器在 2 個表中使用相同的 Guid 作為主鍵

[英]SQL Server use same Guid as primary key in 2 tables

我們有 2 個具有 1:1 關系的表。 一個表應該引用另一個,通常一個會使用 FK 關系。 由於存在 1:1 的關系,我們也可以直接在兩個表中使用相同的 Guid 作為主鍵。

附加信息:數據被分成 2 個表,因為數據是相當獨立的,想想“人”和“地址”——但在一個兩者之間存在明確 1:1 關系的世界中。

根據我被建議的標簽,我假設這被稱為“共享主鍵”。

在 2 個表中使用與 PK 相同的 Guid 會產生不良影響嗎?

要將評論中的信息整合到答案中...

不,兩張桌子共享PK沒有不良影響。 您仍然需要從第二個表創建一個 FK 引用,FK 列將與 PK 列相同。

但是,您在 1:1 情況下的“人員”和“地址”示例並不最適合。 這種做法的常見用法是實體相互擴展。 例如:“User”表可以保存所有用戶的公共信息,但“Candidate”和“Recruiter”表可以分別擴展,並且所有表可以共享相同的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 的列,但這是另一個主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM