回答
能夠識別數據庫中的任何行的不同屬性集稱爲超級密鑰。並且最小超級密鑰被稱爲候選密鑰,即在具有最小數量的屬性的超級密鑰集合之中。主鍵可以是能夠以唯一方式識別數據庫中的特定行的任何鍵。 from this thread
和打字在谷歌所有的三個按鍵爲您提供有關2,480,000 results
這要看情況。
主鍵是表格用來識別不同元素的主鍵。它是從候選鍵中選擇的。
候選鍵是可能成爲主鍵的所有鍵。所有的鑰匙都是獨一無二的,並且可以在桌子上加以區分。
超級密鑰是具有附加屬性的主鍵,這些額外信息用於唯一標識實體組的實例。
超級中心 - 是一套可用於在表中唯一標識記錄的一個或多個列的
候選鍵 - 可以是任何列或組合可以作爲數據庫中唯一密鑰的列。在一個表中可以有多個候選鍵。每個候選鍵都可以被認定爲主鍵。你可以認爲這是「最短」超級鍵或最小超級鍵
主鍵 - 是一列或唯一標識記錄列的組合。只有一個候選鍵可以是主鍵。
對於候選鍵有資格作爲主鍵,它應該是唯一的和非空的。
所以,基本上主鍵只是其中一個候選鍵,它只是一個最小的超級鍵。
根據乾的定義:
你的主鍵是超級關鍵定義 - 你不能有相同的主鍵的兩行。
但是,主鍵不是您的業務的約束,而是數據存儲中的一個人爲約束:例如,您可以將某人的生日設置爲表中的主鍵,並且永遠不會有兩個出生的人在同一天。這將是愚蠢的,但可能的。在這種情況下,該表的主鍵不是該域的超級鍵。
但是,您的主鍵不一定是候選鍵 - 您可以將冗餘列添加到主鍵。
+1好點,但最後一句話是不正確的。根據定義,主鍵必須是最小的(即候選鍵)。也許你的意思是,SQL中的PRIMARY KEY約束可能被定義在非最小的一組列上。那是真實的。但是,這隻能證明SQL語法是不恰當的,因爲定義的列可能根本不是主鍵。 SQL語法的奇怪之處肯定與實際問題沒有關係,這只是關於主鍵(即候選鍵總是最小的超級鍵)。 – sqlvogel
候選鍵是唯一標識元組的字段的最小子集。例如,如果在「user_id」和「pet_id」列上有候選鍵,則不會有超過1個具有相同user_id和pet_id的元組,並且user_id和pet_id都不會作爲元組的唯一標識符。
超級密鑰是一組包含密鑰的字段。使用上面的例子,如果我們添加「pet_name」(這不是關鍵,因爲我們可以有多個名爲「蓬鬆」的寵物),「user_id」和「pet_id」的組合唯一標識了一個元組,這將是一個超級關鍵。基本上它就像一個沒有「最小子字段」約束的候選鍵。
主鍵是您告訴數據庫優化的候選鍵。可能有多種引用唯一元組的方法(即多個候選鍵),但是當您創建將使用最頻繁的表時,您可以指定一個。
- 1. 候選鍵或超級鍵
- 2. 所有候選鍵都是超級鍵,而所有超級鍵都不是候選鍵。爲什麼?
- 3. 候選鍵和主鍵是什麼?
- 4. 主鍵也是索引嗎?
- 5. 主鍵,唯一鍵和候選鍵之間的區別
- 6. 外鍵也是主鍵的一部分
- 7. Oracle Sql:外鍵也是主鍵語法
- 8. 休眠 - @IdClass @ManyToOne - 主鍵也是外鍵
- 9. 外鍵非候選鍵和刪除級聯
- 10. 不是主鍵的超級鍵的例子?
- 11. 主鍵和候選鍵之間的區別
- 12. 如何從一組超級鍵中找到所有可能的候選鍵?
- 13. 用戶名是主鍵的有效候選者嗎?
- 14. 這種關係中的主要關鍵和候選關鍵是什麼?
- 15. 刪除主鍵也刪除外鍵
- 16. MySQL - 也使用外鍵作爲主鍵
- 17. 主鍵和外鍵
- 18. 主鍵和外鍵
- 19. 主鍵和外鍵?
- 20. 外鍵和主鍵
- 21. 選擇SQL與主鍵和外鍵
- 22. 不包含與引用匹配的主鍵或候選鍵
- 23. 幫助查找數據庫候選鍵,主鍵
- 24. SQL錯誤:「引用表中沒有主鍵或候選鍵......」
- 25. 對主鍵使用現有的候選鍵或新的組合鍵
- 26. MySQL - 升級主鍵?
- 27. 主鍵的外鍵外國/初級
- 28. 數據庫屬性可以是主鍵和外鍵嗎?
- 29. 休眠外鍵是主鍵
- 30. 休眠:外鍵是主鍵
是的主鍵是候選鍵,因此也是一個超級鍵。 – sqlvogel