不少网友都有断号重续的要求,看到断号就如手中钉,眼中刺一样难受,其实号码就是个字符嘛,资源是永远用不完的,追求连号其实大可不必要。
如果不是特殊需求,断号重续将会带来很大的麻烦。 断号重续的弊端如下: 1.严重影响数据库性能:
每次编号之前,你必须要扫描全部编号数据,求出断号,然后再给它补上,更有追求完美者,甚至还有进行编号重排,天,累死电脑。如果编号有外键,那么全部要更改所有相关表。如果中途断电或发生错误,够你受的,轻点的,引发多用户并发问题,严重的,毁坏数据。 2.容易引起现实应用错误:
例如:有一项编号0239的物品,资料做好后,你会给这项物品贴上0239的编号标签,有天不小心误删了这项数据后(不删就不会产生断号嘛,呵呵),因为要断号重续嘛,所以0239就被其它物品占用,然后你又会把0239的编号贴在另个物品上,(如果你的合作伙伴将这些编号记录入他 的系统,哇塞,更不得了)资料少,可以通过大脑来分辨,如果上万条数据呢?怎么去分辨?日积月累这将成为一个引向错误的方向,一旦发生这种错误,不仅会造成大小难定的损失,还会引发公司对数据可信度的质疑(剩下的工作就是对成千上万种物品一一核对编号,这是一件非常写意的事情)。 即使是QQ或电线运营商也不会轻易的对停用的通信号码去序号,可以想象一下,这将给用户造成多大的骚扰不不便。 3.不能通过编号分辨资料的先后顺序
整表编号重排可以分辨,但你得有这个勇气,否则的话,你就很难通过编号直接判断那些是新资料,那些是旧资料。 总结:
个人认为,断号重续在技术上玩玩可以,特殊需要,做做程序分析可以,实际应用中不要轻易去尝试(如果领导非有这方面的要求例外,可以生成一份断号表,以及断号的原因) 编号这东西就像抽卫生纸,既然抽出来了,要么就用,要么就扔,如果抽出来不用塞回去或者用完后又重新塞回去,多么不讲卫生呀^_^
附:获取断号的方法
先对编号进行排序,用ADO+步长值,逐个读取编号进行大小对比,然后判断哪个地方产生了断号,然后记录下来。 断号重续的几个解决方案
方案一:
建立一个断号表,编号产生时,写入断号表,记录保存时,在断号表中删除之, 删除数据时,将编号写入断号表,下次编码时,先检索断号表中是否存在编号,如存在,则取用编号到单据并在断号表删除之。 方案二:
删除数据时,不真删,只是做个删除标记,下次编码时,先检索表中是否存删除标记的记录,如存在,则取用之。 使用以上方案时,无论如何都避免对编号重排,只做填补,重续时都应该提醒数据录入着,这个编号曾经出现过,并检查一下该编号是否有过真实的业务行为,(包括曾经是否记过帐、贴过标,是否被
合作伙伴的数据系统记录等等、以免出现数据和现实牛头不对马嘴的事情出现) |
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-11-25 08:24 , Processed in 0.076263 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.