細分主鍵

金色海洋發表於2019-05-13

 

 

  主鍵本身是很簡單的,但是圍繞他產生的故事就不是那麼簡單了。

 

1、 管理

這個是最重要的,沒有規矩不成方圓,主鍵要如何管理一定要實現確定好了,甚至有必要為此寫一個規範。比如是全公司採用相同的方式處理主鍵,還是根據專案、產品來各自管理?還是由專案組成員自行決定?這些都是需要實現說清楚的。

 

 

2、 定義

不是說“主鍵”這個詞的定義,而是主鍵用什麼,比如用GUID還是用int,還是年月日時分秒+流水?

 

3、 生成

主鍵用什麼確定好了之後就是如何生成了。比如GUID,是在程式裡生成,還是由資料庫的欄位預設值來生成?採用無序的GUID還有有序的GUID?再比如int,是採用MSSQL 的自增,還是自己管理。如果自己管理的話,那麼是寫一個儲存過程還是在程式碼裡面寫個函式(類)?

 

4、 安全

1,2,3,4這種主鍵是否夠安全?是不是因為不安全就不能用了?一定要改成GUID才行?那麼改成GUID了,是否還需要進行安全判斷?什麼情況下可以用int,什麼時候不能用(因為安全原因)?

 

5、 效率

主鍵要不要設定索引?聚集的還是非聚集的,還是不用索引?int的和GUID的效率到底差了多少?

 

6、 移植

要不要考慮資料庫的移植,以後會不會更換資料庫?換資料庫了會不會崩潰?

 

7、 資料合併

幾個分公司的資料需要合併到一起,主鍵是否會衝突(重複)?

 

 

說這些的目的就是想讓大家討論的時候更明確一些,雖然我們都在討論主鍵,但是這個範圍也是很大的。

 

歡迎大家繼續補充。

 

 

 


相關文章