首页 新闻 会员 周边

请教一下,在数据库中表的PK_ID值,大家设计一般怎么实现的

0
悬赏园豆:5 [已解决问题] 解决于 2012-01-06 14:01

1、一般的小软件都没有这个PK_ID值来确认唯一的数据

2、好的软件设计有PK_ID值,例如用友的是数字加英文,如:1002V5100000000013PC

3、不要弄这个自增格式(1,1)的哦,这个感觉不太好。

希望大家多多给予建议和解答,在此谢谢了...

问题补充:

GUID的定义:
uniqueidentifier 数据类型的主要优点是保证由 Transact-SQL NEWID 函数或应用程序 GUID 函数生成的值在全球是唯一的
 uniqueidentifier数据类型的具有几个缺点:
1、值长且难懂。这使用户难以正确键入它们,并且更难记住
2、这些值是随机的,而且它们不能接受任何使它们对用户变得更有意义的模式。
3、没有任何方式可以决定生成 uniqueidentifier 值的顺序。它们不适用于那些依赖递增的键值的现有应用程序。
4、uniqueidentifier 数据类型具有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着使用 uniqueidentifier 键建立的索引可能会比使用 int 键实现的索引相对慢一些。
所以如果用GUID的话,其他表使用这个GUID作为外键好像显得不是很好,因为中间带"-"

来壶清茶的主页 来壶清茶 | 初学一级 | 园豆:190
提问于:2012-01-04 11:22
< >
分享
最佳答案
0

你说的很对,自增格式(1,1),这个感觉不太好。

还有两种方法,一种就是SQL SQL 2005有一种数据类型,uniqueidentifier类型,唯一标识符类型,默认值设置newid()即可。看图片。

GUID

还有一种方法,那就是模仿Oracle中序列,在数据库中建立一张表,表中两个字段,一个表名,当前最大值,默认为1。

然后每次插入的时候,都去获取这个最大值,同时更新这张表中最大值+1。

不过也可以两个都用。自增格式也用,GUID也用。关联用GUID,查询用自增格式。

收获园豆:4
NetSQL | 小虾三级 |园豆:1737 | 2012-01-04 14:49

首先,非常感谢你的回复,但是GUID确实也用了,总体感觉还行吧,还是希望能有更好的解决办法。

谢谢了...

来壶清茶 | 园豆:190 (初学一级) | 2012-01-05 08:56
其他回答(2)
0

可以用GUID

收获园豆:1
碧落星痕 | 园豆:708 (小虾三级) | 2012-01-04 11:32

已使用,希望能得到大师的指点,得出更好的解决方案...谢谢

支持(0) 反对(0) 来壶清茶 | 园豆:190 (初学一级) | 2012-01-05 08:58
0

uniqueidentifier 使用这个类型吧;为了数据的安全;这个是个不错的选择;

画方软件 | 园豆:778 (小虾三级) | 2012-01-04 15:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册