使用GUID作为数据表主键的好处

使用GUID作为数据表主键的好处

使用GUID作为数据表主键好处

数据表主健通常采用以下 3种方式:

1. 自动递增值

2. 唯名称这个是使用自己定义算法来生成个唯序列号

3. GUID(全局唯标识符)

GUID和自动递增值及唯名称比较GUID在客户端生成由GUID特性决定通过GUID生成值可能出现重复机会几乎

等于零因此保证在插入表时候主键值唯

可以方便处理分布式数据提交比如:分店数据向总店提交――直接将该部分数据插入即可

支持离线数据处理对本地数据包进行新增记录时即可将该数据表关键字段值赋值其处理思路方法是和在线新增

时是致

自动递增值 在数据库服务器端生成由于该值是由数据库系统内部处理亦保证其唯性但由于其是在数据库服务器

端生成因此必须将该值返回客户端客户端通过该值过行其它操作比如张单据(主从表)是使用自动递增值当插入单

据擡头后必须将单据擡头关键字段值返回再插入单据明细(单据明细是通过单据擡头关键字段进行关联)

不能很好处理分布式数据提交比如:分店数据向总店提交――提交数据时必须重新生成该数据表关键字段值以保证

该字段值唯

要支持离线数据处理需要进行额外处理对本地数据包进行保存记录(保存到本地)时需要插入个假设唯值在提交

离线数据回数据服务器时再重新生成真正唯值并重新进行相关处理

唯名称 在客户端生成或在服务端生成相对于自动递增值区别地方就是自己维护生成唯值算法及所保存临时值容

易造成出错或其它问题如果是在客户端生成唯值话还必须保证所生成值是唯

不能很好处理分布式数据提交比如:分店数据向总店提交――提交数据时必须重新生成(或预先处理)该数据表关键

字段值以保证该字段值唯

要支持离线数据处理需要进行额外处理对本地数据包进行保存记录(保存到本地)时需要插入个假设唯值在提交离

线数据回数据服务器时再重新生成真正唯值并重新进行相关处理

例子介绍说明下面以个新增单据保存比较GUID和自动递增值/唯名称差别

动作

GUID

自动递增值/唯名称

单据擡头

新增

单据擡头关键字段值:获取并填写

单据擡头关键字段值:无

保存

直接保存

首先获取并填写关键字段值然后再进行保存

返回

直接返回

返回时必须将关键字段值返回

单据明细

新增

关联单据擡头字段值:直接填写

单据明细关键字段值:获取并填写

关联单据擡头字段值:无

单据明细关键字段值:无

保存

直接保存

获取单据擡头关键字段值并填写到单据明细关联单据擡头字段中;

然后获取并填写单据明细关键字段值;

再进行保存

综合以上所述用GUID作为数据表关键字段值是可以减轻关键字段相关操作并且是最直接实用思路方法 

 

点赞