前段時間經理讓使用UUID設置爲主鍵,UUID可以自動生成一個36字符組成的字符串,UUID是由10個阿拉伯數字加上26個字母組成,8-4-4-4-12的形式組成,例如:4c47cf4a-a55a-4fce-8cd9-024a790714b010。由此可見UUID會產生無數種的組合,不用擔心會產生重複。
產生UUID的方法也很簡單:
String uuid=UUID.randomUUID().toString();
那使用UUID自動生成主鍵有什麼好處呢?平時常用到自動生成主鍵的方式就是序列,在Oracle中寫一個序列,將觸發器寫在Oracle中或者寫在Java代碼中,這樣就有一個問題,當需要遷移數據庫的時候,容易將序列遺忘使得程序無法運行。
有些人會選擇複合主鍵,或者用業務的某個信息作爲主鍵。早期的數據庫設計,大多都是用業務信息做主鍵,在實踐中吃了很多虧後,大家更認同用業務無關的字段來做主鍵。比如用訂單編號來做主鍵,開始大家覺得訂單編號應該是唯一的編號。隨着業務的變化,客戶在使用中提出,訂單可以作廢,但是該記錄不能刪除,而且需要新建一個具有相同訂單編號的訂單,麻煩來了。
綜上所述,用UUID作爲主鍵有他的優越性:
1、操作產生簡單;
2、維護簡單;
3、不會產生重複值;
4、使得主鍵與業務分離開來。