使用GUID作为数据表主键的好处
数据表主健通常采用以下三种方式:
1.自动递增值。
2.名称。这个是使用自己定义的算法来生成一个序列号。
3.GUID(全局标识符)。
GUID与自动递增值及名称比较
GUID
在客户端生成,由GUID的特性决定,通过GUID生成的值可能出现重复的机会几乎等于零,因此保证在插入表的时候主键值。
可以方便处理分布式数据的提交,比如:分店数据向总店提交――直接将该部分数据插入即可。
支持离线数据处理。对本地数据包进行新增记录时即可将该数据表的关键字段值赋值,其处理方法是与在线新增时是一致的。
自动递增值
在数据库服务器端生成,由于该值是由数据库系统内部处理的,亦保证其性,但由于其是在数据库服务器端生成,因此必须将该值返回客户端,客户端通过该值过行其它操作。比如一张单据(主从表)是使用自动递增值,当插入单据抬头后,必须将单据抬头的关键字段值返回,再插入单据明细(单据明细是通过单据抬头关键字段进行关联的)。
不能很好处理分布式数据的提交,比如:分店数据向总店提交――提交数据时必须重新生成该数据表的关键字段值,以保证该字段值。
要支持离线数据处理需要进行额外的处理,对本地数据包进行保存记录(保存到本地)时需要插入一个假设值,在提交离线数据回数据服务器时再重新生成真正的值,并重新进行相关的处理。
名称
在客户端生成或在服务端生成,相对于自动递增值不同的地方就是自己维护生成值的算法及所保存的临时值,容易造成出错或其它问题。如果是在客户端生成值的话,还必须保证所生成的值是的。
不能很好处理分布式数据的提交,比如:分店数据向总店提交――提交数据时必须重新生成(或预先处理)该数据表的关键字段值,以保证该字段值
要支持离线数据处理需要进行额外的处理,对本地数据包进行保存记录(保存到本地)时需要插入一个假设值,在提交离线数据回数据服务器时再重新生成真正的值,并重新进行相关的处理。
实例说明
下面以一个新增单据保存比较GUID与自动递增值/名称的差别。
动作 |
GUID |
自动递增值/名称 |
单据抬头 |
||
新增 |
单据抬头关键字段值:获取并填写 |
单据抬头关键字段值:无 |
保存 |
直接保存 |
首先获取并填写关键字段值,然后再进行保存 |
返回 |
直接返回 |
返回时必须将关键字段值返回 |
单据明细 |
||
新增 |
关联单据抬头字段值:直接填写 单据明细关键字段值:获取并填写 |
关联单据抬头字段值:无 单据明细关键字段值:无 |
保存 |
直接保存 |
获取单据抬头关键字段值并填写到单据明细的关联单据抬头字段中; 然后获取并填写单据明细关键字段值; 再进行保存 |
正在阅读:
2017计算机等考三级数据库辅导:使用GUID作为数据表主键的好处11-21
小学关于教师节作文(400字)10-24
如何解决孩子专注力不好的问题,孩子专注力不好,四招解决问题04-23
蚌埠市教育招生考试院:2019年安徽蚌埠中考录取分数线(已公布)04-11
2018年青海中考政治试题及答案05-28
去韩国留学如何顺利毕业?01-21
季度总结会议主持稿范例12-01
2020年安徽初级经济师报名时间:8月3日至8月12日12-01
澳洲188a创业移民国内公司销售额:澳洲188A创业移民的“七年之痒”08-03
小学生作文:广播操比赛12-13