一個superkey可以包含不屬於主鍵的東西嗎?superkey可以包含不屬於主鍵的東西嗎?
回答
從邏輯上講,是的。如果表X
有列{A, B, C}
和A
是主鍵,然後{A}
,{A, B}
,{A, C}
和{A, B, C}
都superkeys,因爲如果你有這些集合中的任何一個,你知道的行中的所有值(如果存在的話。)
然而,在某些用途中,它不被當作SQL中的一個關鍵字,例如,如果表Y
有A
和B
你可以通過而不是通常定義一個外鍵Y(A, B) REFERENCES X(A, B)
,因爲{A, B}
不是主鍵。如果您希望能夠聲明該外鍵,則您必須在X(A, B)
上添加另一個UNIQUE
約束,因爲它複製了主鍵的一部分,所以效率低下。
在我看來,這是SQL的許多缺陷之一。
superkey可以包含非唯一標識符或主鍵。但是像複合主鍵一樣,組合必須是唯一的。 規範化數據集具有表格,用於保存與數據庫目的相關的特定實體的相關數據。因此,例如,具有員工數據庫的公司具有員工表並且可能具有另一個員工行動歷史表(促銷,評論,薪金調整等)
如果密鑰唯一地具有資格選擇表中的特定行,以便該表中的數據完全取決於該鍵,而不需要其他數據。
假設員工表是基於美國的。它可能有兩個候選人 - 一個可能是一個員工編號,另一個可能是員工的社會安全號碼。如果一家公司要求員工擁有SSN ......,這可能會發生。
好吧,兩名候選人 - 員工號碼和SSN。
您必須選擇一個作爲主鍵,在這種情況下,另一個成爲僅取決於鍵的選擇的另一個數據字段。
在美國,根據兩個因素,員工數量可能會被選爲PK,將SSN留在次要領域。首先,使用SSN存在法律限制,因爲它是促進身份盜用的個人識別信息。其次,一個人可能申請了SSN,但尚未獲得。所以SSN不能被依賴,從而使其作爲候選人無效。
因此,主鍵和候選鍵之間的差別在於其他候選者失去了競賽。
SUPERKEY本質上是一個超定鍵,一個保證是唯一的選擇器 - 但它不是最小的。在我的員工表格示例中,(員工編號,SSN)的組合將是一個超級鍵。請注意,superkey通常會包含主鍵。
還有更多。這個定義提到了一個與整個記錄相同的基數作爲關鍵字的超級鍵。 (最終的關鍵,完全不切實際,因爲你必須事先知道整個記錄才能將它用作關鍵...)
「基數」只是說,當我查詢單個鍵值的表時,什麼是平均返回記錄數。對於正確的主鍵,對於表中存在的所有值,這總是且僅爲1。 (顯然,表中不存在的數字爲零。)基數將大於非唯一鍵的基數。對於另一個頻譜的另一個例子是一個大小爲N的表格,使用「Gender」作爲關鍵字會給你一個N/2的基數。記住,因爲它是AVERAGE返回大小,所以表格的分佈不一定是完美的。
希望有所幫助。
- 1. 包含並不包含任何東西
- 2. simplexml_load_file:如果主標籤包含東西
- 3. jquery:包含東西或其他東西
- 4. 有什麼東西可以自動包含PHP以外的類文件嗎?
- 5. Android,如何可選地包含基於API級別的東西
- 6. 可以寫這樣的東西嗎?
- 7. 容器不包含任何東西
- 8. 容器不會包含任何東西
- 9. $ _post不包含任何東西
- 10. GDK Pixbuf可以旋轉少於90度的東西嗎?
- 11. scala splat可以用於任何不是可變參數的東西嗎?
- 12. htaccess的重定向包含的東西
- 13. 如何匹配非包含的東西?
- 14. 獲取包含東西的整行
- 15. Class屬性可以包含多於1個css類嗎?
- 16. SQLite表可以包含除主鍵以外的更多唯一字段嗎?
- 17. 智能感知,包括不應該包含的東西
- 18. 外鍵屬性可以是組合主鍵的一部分嗎?
- 19. 正常密鑰應包含主鍵嗎?
- 20. 我可以改變DateFormat.SHORT以包括秒或類似的東西嗎?
- 21. 主鍵可以等於不同的列嗎?
- 22. 使用數據庫查找主鍵以外的東西
- 23. Spring是否包含類似於BeanUtils填充方法的東西?
- 24. PHP包含,但只有某些東西
- 25. NSMutableArray可以包含nil嗎?
- 26. Bundle.config可以包含ScriptBundles嗎?
- 27. 如果$ _POST包含除文本以外的任何東西
- 28. 可以_sync_val_compare_and_swap返回int以外的任何東西嗎?
- 29. getElementById可以在文檔以外的東西上調用嗎?
- 30. 數據庫屬性可以是主鍵和外鍵嗎?
'A'是結果一致的唯一原因,並且包含'B'和/或'C'(或其組合)因爲'A'是主鍵沒有額外的好處。因此,'A'是唯一的「超級鍵」。 – 2010-02-01 21:51:33
你所描述的是*候選鍵*。 'A'是唯一的候選關鍵。 「ABC」,「AB」,「BC」是超級鍵,但不是候選鍵。 – finnw 2010-02-02 06:40:38