使用GUID作為數據表主鍵好處
數據表主健通常采用以下 3種方式:
1. 自動遞增值
2. 唯名稱這個是使用自己定義算法來生成個唯序列號
3. GUID(全局唯標識符)
GUID和自動遞增值及唯名稱比較GUID在客戶端生成由GUID特性決定通過GUID生成值可能出現重復機會幾乎
等於零因此保證在插入表時候主鍵值唯
可以方便處理分布式數據提交比如:分店數據向總店提交――直接將該部分數據插入即可
支持離線數據處理對本地數據包進行新增記錄時即可將該數據表關鍵字段值賦值其處理思路方法是和在線新增
時是致
自動遞增值 在數據庫服務器端生成由於該值是由數據庫系統內部處理亦保證其唯性但由於其是在數據庫服務器
端生成因此必須將該值返回客戶端客戶端通過該值過行其它操作比如張單據(主從表)是使用自動遞增值當插入單
據抬頭后必須將單據抬頭關鍵字段值返回再插入單據明細(單據明細是通過單據抬頭關鍵字段進行關聯)
不能很好處理分布式數據提交比如:分店數據向總店提交――提交數據時必須重新生成該數據表關鍵字段值以保證
該字段值唯
要支持離線數據處理需要進行額外處理對本地數據包進行保存記錄(保存到本地)時需要插入個假設唯值在提交
離線數據回數據服務器時再重新生成真正唯值並重新進行相關處理
唯名稱 在客戶端生成或在服務端生成相對於自動遞增值區別地方就是自己維護生成唯值算法及所保存臨時值容
易造成出錯或其它問題如果是在客戶端生成唯值話還必須保證所生成值是唯
不能很好處理分布式數據提交比如:分店數據向總店提交――提交數據時必須重新生成(或預先處理)該數據表關鍵
字段值以保證該字段值唯
要支持離線數據處理需要進行額外處理對本地數據包進行保存記錄(保存到本地)時需要插入個假設唯值在提交離
線數據回數據服務器時再重新生成真正唯值並重新進行相關處理
例子介紹說明下面以個新增單據保存比較GUID和自動遞增值/唯名稱差別
動作
GUID
自動遞增值/唯名稱
單據抬頭
新增
單據抬頭關鍵字段值:獲取並填寫
單據抬頭關鍵字段值:無
保存
直接保存
首先獲取並填寫關鍵字段值然后再進行保存
返回
直接返回
返回時必須將關鍵字段值返回
單據明細
新增
關聯單據抬頭字段值:直接填寫
單據明細關鍵字段值:獲取並填寫
關聯單據抬頭字段值:無
單據明細關鍵字段值:無
保存
直接保存
獲取單據抬頭關鍵字段值並填寫到單據明細關聯單據抬頭字段中;
然后獲取並填寫單據明細關鍵字段值;
再進行保存
綜合以上所述用GUID作為數據表關鍵字段值是可以減輕關鍵字段相關操作並且是最直接實用思路方法