数据库中使用GUID作为唯一编码的问题
在数据库中希望使用GUID作为主键。
GUID表现形式为一个36字节的字符串。
但GUID其实是一个二进制的占用16个字节的数据,所以我想数据字段的数据类型设置为16为字节是否可行?
为了查询或修改数据记录的方便,通常还是需要将主键字段设成字符串;用二进制数据类型作为主键或带来程序处理上的麻烦。
在Delphi中通过CreateClassID、CreateGUID得到GUID字符串,请问怎么得到这个字符串对应的二进制数据?将得到的二进制数据强行转换成字符串是否仍然能够保证它的唯一性?
下面是这么一个转换的例子:
GUID:B9E9A548-FFB5-45D1-8377-6F59F5A55621
对应的16进制数:0x48A5E9B9B5FFD14583776F59F5A55621
强制转换成的字符串:Hラ沟袳僿oY酯V!
最终数据的主键设置为16字节字符串,保存上面那个看上去是乱码的字符串,这个方案是否可行?以及如何从GUID的字符串得到这个乱七八糟的字符串?
请各位高手指点一二。