資料庫主鍵的選擇

來源:互聯網
上載者:User

以前在設計資料表的主鍵欄位時,並沒有深入地考慮過這個問題。昨天在看《應用Rails進行敏捷Web開發》時,裡面提到了這個問題。

書裡舉了一個圖書的例子。對於大多數人的經驗來說,可能會選擇用書的ISBN編號來作為主鍵,因為每一種圖書的ISBN編號在全世界都是唯一的。但其實這也不是絕對的,ISBN的格式也有可能在開了幾個會以後發生改變。因此,最好還是由開發人員自己定義一個簡單的ID欄位來表示主鍵。另外,對於常用的使用者名稱表,我以前也是把username作為資料表的主鍵。雖然使用者名稱不允許更改,而且也必須唯一,但仍然有問題。比如一個使用者名稱是“xxx/yyy”,如果顯示使用者資訊的頁面URL是example.com/user/zzzz這種格式的,那麼那種使用者名稱就有可能出問題。因此最好還是使用數字ID而不是使用者名稱作為主鍵更好些。

對於實現多對多關係的關聯表,通常是使用兩個表的外鍵組合起來作為主鍵。這通常也不會存在什麼問題,實際上有很多確實是這個用的。但有時候關聯表並不僅僅是作關聯用,還可以在上面附加更多的資訊。這樣關聯表就可以作為一個模型類實現,只要有它的現實意義。在這種情況下,也可以考慮用一個數字ID作為主鍵。通常這樣能簡化查詢,提高查詢速度。

 

轉自:http://cn.programmingnote.com/blog/?p=98

 

使用者名稱應該唯一   做唯一標識!加非簇索引!,對使用者可見   
ID做為主鍵   一般用來join,對使用者不可見! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.