数据库关键字的设计问题
比如:在设计一个“用户”表时,通常我们都习惯以userID作为关键字。
当添加一个新的用户时,以记录数+1作为它的值。
在没有删除操作时一切OK。
但是当删除一个或多个用户时,就要相应的修改数据库中每条记录的userID,以保证下一次新增用户时主键值不冲突。
我觉得这样做很麻烦,而且对数据库的频繁操作也影响程序的执行效率。
不知道大家是怎样做的?
请教我如何去合理的设计一个表。
谢谢!!
问题点数:50、回复次数:10Top
1 楼fancyf(凡瑞)回复于 2005-05-22 18:09:07 得分 10
不要修改每条记录的userID,保证不冲突的话用一个自增列就可以,删除用户就把那个ID空着好了,为什么一定要连续呢?Top
2 楼lxysjl(流星雨)回复于 2005-05-22 18:12:32 得分 10
是啊,没有必要要连续的啊。直接自增列就可以呢Top
3 楼zjcxc(邹建)回复于 2005-05-22 18:14:14 得分 0
为什么要修改? 让它空着不好吗?Top
4 楼zjcxc(邹建)回复于 2005-05-22 18:14:54 得分 10
修改的话,连相关联表的数据也得一齐修改,那是一件麻烦事. 而且userid是数据处理需要的,不是给用户看的,是否连续并不重要.Top
5 楼angelcool(快乐需要创造)回复于 2005-05-22 18:19:09 得分 0
让它自增总有一个限吧。你不可能把一个字段定义为无限长呀??
短期是可以实现,但以后呢??
这样不太好吧!!Top
6 楼OneGip(快信网王计平)回复于 2005-05-22 18:23:18 得分 20
就用Identity 自动增长属性,足够一般使用,况且你是个用户表,用一辈子也不会达到它的十分之一的大小.Top
7 楼angelcool(快乐需要创造)回复于 2005-05-22 18:26:13 得分 0
那怎么设定主键为自增的呢?
我用的是SQL ServerTop
8 楼OneGip(快信网王计平)回复于 2005-05-22 18:32:18 得分 0
再顶Top
9 楼angelcool(快乐需要创造)回复于 2005-05-22 18:40:07 得分 0
to OneGip(流浪者)
为什么我的SQL Server的类型里没有dentity 这种类型呢??
是不是选“标识”为“是“,其下的标识种子和增量都按默认值为1就OK了??
Top
10 楼angelcool(快乐需要创造)回复于 2005-05-22 18:58:25 得分 0
我搜索了一下,好像所谓的Identity 属性就是如我所说的--选“标识”为“是“,其下的标识种子和增量都按默认值为1。
如果有什么补充,请告诉我。谢谢!Top




