請勿使用郵政編碼或社會安全號碼
數據庫依賴於密鑰來存儲,排序和比較或創建記錄之間的關係。 如果你已經在數據庫中呆了一段時間,你可能聽說過不同類型的鍵:主鍵, 候選鍵和外鍵 。 當您創建新的數據庫表時,系統會要求您選擇一個主鍵 ,以唯一標識存儲在該表中的每條記錄。
為什麼主鍵很重要
主鍵的選擇是您在設計新數據庫時要做的最重要的決定之一。 最重要的約束是您必須確保所選密鑰是唯一的。 如果可能兩個記錄(過去,現在或將來)可能共享一個屬性的相同值,那麼對於主鍵來說這是一個糟糕的選擇。
主鍵的另一個重要方面是由關係數據庫中的其他表格使用。 在這方面,主鍵就像一個指針的目標。 由於這些相互依賴性,創建記錄時必須存在主鍵,並且永遠不會更改。
主鍵的選擇不佳
有些人可能會認為主鍵的明顯選擇可能是一個糟糕的選擇。 這裡有一些例子:
- 郵政編碼不能為城鎮表格製作好主鍵。 如果您正在製作一個簡單的城市查找表,郵政編碼似乎是一個邏輯主鍵。 但是,經過進一步調查,您可能會意識到不止一個城鎮共享一個郵政編碼。 例如,新澤西州的海王星城市,海王星城市,廷頓瀑布城和沃爾鎮都共享07753郵政編碼。
- 由於很多原因, 社會安全號碼並不是很好的主鍵。 大多數人認為他們的SSN是私人的,不希望數據庫用戶清楚地看到它。 有些人沒有SSN--外國人或從未收到社會安全卡的移民。 個人死亡後,SSN也可以重新使用。 如果社會保障署在發生欺詐或身份盜竊的情況下發布新號碼,一個人在一生中可能會有一個以上的社會安全號碼。
- 電子郵件地址也是主鍵的不好選擇。 雖然它們是獨一無二的,但它們可以隨時間變化。 此外,並非每個人都有電子郵件地址。
選擇一個有效的主鍵
那麼,什麼使得一個好的主鍵? 在大多數情況下,請轉到您的數據庫系統尋求支持。
數據庫設計的最佳做法是使用內部生成的主鍵。 您的數據庫管理系統通常可以生成一個在數據庫系統之外沒有意義的唯一標識符。 例如,您可能使用Microsoft Access AutoNumber數據類型創建一個名為RecordID的字段。 自動編號數據類型會在您每次創建記錄時自動增加字段。 雖然數字本身沒有意義,但它提供了一種可靠的方式來引用查詢中的單個記錄。
一個好的主鍵通常很短,使用數字,並且避免使用特殊字符或大小寫字符組合,以便快速進行數據庫查找和比較。