主鍵本身是很簡單的,但是圍繞他産生的故事就不是那麼簡單了。
1、 管理
這個是最重要的,沒有規矩不成方圓,主鍵要如何管理一定要實作确定好了,甚至有必要為此寫一個規範。比如是全公司采用相同的方式處理主鍵,還是根據項目、産品來各自管理?還是由項目組成員自行決定?這些都是需要實作說清楚的。
2、 定義
不是說“主鍵”這個詞的定義,而是主鍵用什麼,比如用GUID還是用int,還是年月日時分秒+流水?
3、 生成
主鍵用什麼确定好了之後就是如何生成了。比如GUID,是在程式裡生成,還是由資料庫的字段預設值來生成?采用無序的GUID還有有序的GUID?再比如int,是采用MSSQL 的自增,還是自己管理。如果自己管理的話,那麼是寫一個存儲過程還是在代碼裡面寫個函數(類)?
4、 安全
1,2,3,4這種主鍵是否夠安全?是不是因為不安全就不能用了?一定要改成GUID才行?那麼改成GUID了,是否還需要進行安全判斷?什麼情況下可以用int,什麼時候不能用(因為安全原因)?
5、 效率
主鍵要不要設定索引?聚集的還是非聚集的,還是不用索引?int的和GUID的效率到底差了多少?
6、 移植
要不要考慮資料庫的移植,以後會不會更換資料庫?換資料庫了會不會崩潰?
7、 資料合并
幾個分公司的資料需要合并到一起,主鍵是否會沖突(重複)?
說這些的目的就是想讓大家讨論的時候更明确一些,雖然我們都在讨論主鍵,但是這個範圍也是很大的。
歡迎大家繼續補充。