回覆列表
  • 1 # wqefw15467

    不一定非得有。然而根據資料庫設計的正規化。主鍵是第一正規化。你用手機號作為唯一的其實並不是完全經得起推敲,真實的世界完全有可能打破這個約束。比如說,你考慮到沒有:有手機號碼過期了被轉讓了,換了一個所有者。之前的持有人做過的事情還是要算到原來那個人的頭上,此時如果手機號碼是主鍵怎麼辦?你的系統就無法區分這2個都曾持有這個手機號碼的人所做的事情了。 其他的情況都類似。還有一個著名的例子就是身份證號碼。身份證號碼確實是對人唯一的,然而一個人是可以辦理多個身份證的,號碼不變。問題來了,因為系統是按照身份證號碼做唯一主鍵的。此時,如果身份證是被盜的情況下,你是沒有辦法在系統裡面登出的,因為新舊2個身份證的“主鍵”是身份證號碼。那麼……舊的身份證完全有效。這個時候,還好有一個身份證有效時間的東西,只有靠身份證有效期來辨識了。這就是現在這麼多詐騙的由來。如果是護照,一個人辦理新護照,護照號碼是不會和舊護照號碼相同的。而是新增一個簽註,說明舊的護照號碼是多少。所以,經驗告訴我們。不要相信自己的直覺,業務上所謂的唯一往往都是不靠譜的,經不起時間的考研的。所以需要單獨設定一個和業務無關的主鍵,專業術語叫做代理主鍵(surrogate key)

  • 中秋節和大豐收的關聯?
  • 籃子用英文?