DBMS中的主鍵和超級鍵有什麼區別
我是 DBMS 的新手,我仍在學習理論。
我對這項關鍵業務感到非常困惑,在Google搜尋後,我將其縮小到只有 2 個我沒有得到的鍵(主鍵和超級鍵)。
我有幾個關於 DBMS 的問題。如果您能幫我回答這些問題,我將不勝感激。
1)DBMS中的主鍵和超級鍵有什麼區別? 如果你能用一個全面的例子來正確解釋,不勝感激
2)Primary key 和 Super key都可以有多個列組合成 Primary key 和 Super key 嗎?
3)主鍵是超級鍵的子集,反之亦然?
超級鍵只是一個非最小的候選鍵,也就是說,一個具有附加列的附加列並不嚴格要求以確保行的唯一性。
主鍵是最小的候選鍵,也就是說所有組成列都是嚴格要求的,以確保唯一性。
作為一名擁有 30 年經驗的數據庫開發人員/設計人員,我什至從未聽說過Super Key一詞,直到我看到這個問題並進行了查找。Super Key 的概念似乎與性能和物理模式設計的主題更密切相關,因為它直接映射到具有用於改進查詢覆蓋的附加列的唯一非聚集索引的概念。
超級鍵:超級鍵代表鍵的超集。超級密鑰是一組一個或多個屬性,它們被集體採用,並且可以唯一地標識所有其他屬性。
例如,考慮下表:
Book (BookId, BookName, Author)
所以在這張表中我們可以有
- (BookId) - (BookId, BookName) - (BookId, BookName, Author) - (BookId, Author) - (BookName, Author)
作為我們的超級鑰匙。每個 Super Key 能夠唯一標識每個元組(記錄)。
候選鍵:候選鍵是沒有任何冗餘屬性的超級鍵。換句話說,候選鍵是最小的超級鍵。例如,在上圖中
- (BookId) - (BookName,Author)
這兩個鍵可以是候選鍵,因為剩餘的鍵具有冗餘屬性。Super Key
(BookId, BookName)
記錄中的手段可以被唯一標識BookId
,因此BookName
是冗餘屬性。主鍵:它是數據庫設計者選擇的一個候選鍵,用於辨識實體集中的實體。OR 用於唯一標識每條記錄的鍵稱為主鍵。
從上面的候選鍵中,任何一個都可以是主鍵。而另一個未被選為主鍵的將被稱為備用鍵