Primary-Key

兩個主鍵而不是複合鍵,這種關係叫什麼?

  • May 25, 2017

我正在將員工/職位數據與另一個系統集成。

第一個系統是人力資源。它有一個 Employee 表和一個 Positions 表。第二個系統跟踪辦公空間並跟踪辦公室屬於誰。它使用一張桌子

$$ em $$儲存員工和職位數據。 如果員工更改職位,則職位 ID 會更改。如果職位空缺並且有新員工填補該職位,則更改員工 ID。

職位 ID 和員工 ID 都充當此表的主鍵。我想弄清楚在數據庫術語中是否有這種關係的名稱?

它被稱為複合鍵。

如何使用複合鍵並不重要。如果兩條數據唯一標識一行,則稱為複合鍵。事實上,您定義的案例幾乎總是複合鍵的案例。

它們通常是自然鍵(具有與數據相關的兩個欄位),而不是代理鍵(具有獨立於數據的兩個欄位)。商店位置和產品 ID 是自然複合鍵的典型範例。你只是在使用員工。

如果偶然地,您的意思是詢問複合鍵中使用的兩個輸入是否都有一個名稱,而它們有一個UNIQUE屬性,那麼沒有。您可以這樣做,但即使在您的情況下也有點尷尬,對吧?我的意思是,如果一名員工管理兩個空間怎麼辦?

CREATE TABLE em ( emid serial PRIMARY KEY, name text, position text );
CREATE TABLE space ( spaceid serial PRIMARY KEY, owner text );
CREATE TABLE em_space (
 emid    int REFERENCES em,
 spaceid int REFERENCES space,
 PRIMARY KEY (emid, spaceid)
);

引用自:https://dba.stackexchange.com/questions/174505