数据库主键设计之思考(2)

     今朝一个较量好的主键是回收GUID,虽然我是推荐主键照旧字符型的,但值由GUID生成,GUID是可以自动生成,也可以措施生成,并且键值不行能反复,可以办理系统集成问题,几个系统的GUID值导到一起时,也不会产生反复,就算有“o”老数据也可以区分,并且效率很高,在.NET里可以直接利用System.Guid.NewGuid()举办生成,在SQL里也可以利用 NewID()生成。利益是:

     同 IDENTITY 列对比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用措施的后续处理惩罚提供了很大利便。

     便于数据库移植,其它数据库中并不必然具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用措施中发生的 GUID 值存入数据库,它不会对原有数据带来影响。

     便于数据库初始化,假如应用措施要加载一些初始数据, IDENTITY 列的处理惩罚方法就较量贫苦,而 uniqueidentifier 列则无需任那里理惩罚,直接用 T-SQL 加载即可。

     便于对某些工具或常量举办永久标识,如类的 ClassID,工具的实例标识,UDDI 中的接洽人、处事接口、tModel标识界说等。

  缺点是:

     GUID 值较长,不容易影象和输入,并且这个值是随机、无顺序的。

     GUID 的值有 16 个字节,与其它那些诸如 4 字节的整数对比要相对大一些。这意味着假如在数据库中利用 uniqueidentifier 键,大概会带来两方面的消极影响:存储空间增大;索引时间较慢。


     我也不是推荐GUID最好,其实在差异的环境,我们都可以回收上面的某一种方法,思考了一些利与弊,也利便各人在举办设计时参考。这些也只是我的一点思考罢了,并且大概我常识面限制,会有一些误论在内里,但愿各人有什么想法接待接头。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8707.html