數據庫候選鍵有時成為主鍵
候選鍵是屬性的組合,可以唯一地用於標識數據庫記錄而不用引用任何其他數據。 每個表可能有一個或多個候選人。 選擇其中一個候選鍵作為表主鍵 。 一個表只包含一個主鍵,但可以包含多個候選鍵。 如果候選鍵由兩列或更多列組成,則稱其為複合鍵。
候選鍵的屬性
所有候選鍵都有一些共同的屬性。 其中一個特性是在候選密鑰的生存期內,用於識別的屬性必須保持不變。 另一個是該值不能為空。 最後,候選鍵必須是唯一的。
例如,要唯一標識每個員工公司可能使用該員工的社會安全號碼。 正如你所看到的,有些人的名字,姓氏和位置相同,但是沒有兩個人擁有相同的社會安全號碼。
社會安全號碼 | 名字 | 姓 | 位置 |
---|---|---|---|
123-45-6780 | 克雷格 | 瓊斯 | 經理 |
234-56-7890 | 克雷格 | 比爾 | 關聯 |
345-67-8900 | 桑德拉 | 比爾 | 經理 |
456-78-9010 | 天合光能 | 瓊斯 | 關聯 |
567-89-0120 | 桑德拉 | 工匠 | 關聯 |
候選鍵的例子
某些類型的數據很容易成為候選人:
- 國際標準書號 - 國際標準圖書唯一標識書籍和相關媒體。 ISBN的發行受到行業看門人的嚴格監管,ISBN通常不會被出版商重新使用。
- 銀行賬戶號碼 - 大多數銀行不回收賬號。
- 序列號 - 儘管序列號不受各行業管理,但在單一供應商的情況下,序列號應始終是唯一的。
- 駕駛執照號碼 - 通常,這些號碼不會重複。 但是,從一個國家到另一個國家的人可以有多個DL號碼。
- 美國國家衛生與公眾服務部門頒發的國家醫療機構身份證 - 醫生和其他獲得許可的醫療服務提供商均至少有一個獨特的NPI。
然而,一些看起來很好的候選信息實際上證明是有問題的:
- 電話號碼 - 大多數運營商都會回收電話號碼,並且個人用戶可以同時擁有多個電話號碼。
- 通用價格代碼-UPC是唯一的,但UPC塊的所有者可以隨意回收產品。
- 醫療記錄號 - MRN通常在醫院級別發布,沒有任何國家指導
- 社會安全號碼 - 雖然它們在理論上是獨一無二的,但SSN確實得到回收利用,並且SSN欺詐已經足以使這種識別符在大型數據集中存在問題。 (在驗證SSN的雇主範圍內,這個挑戰不是問題。)