以下是引用lsy在2013-2-12 14:18:00的发言:
数据库最讲究雁过留痕
如果是基础数据表,相当于数据字典的,变动很小,软件商或管理员在录入之前先禁止自动编号,等数据录入完毕,在自动编号列用序列填充按编号规则一次性完成编号,然后恢复自动编号,以后零星添加新行的时候,就会自动编号,这样可以避免初始录入过程中,频繁增删造成断号。
如果是日常操作录入的大量增加的数据行,自动编号列当然是一行行自动增加,不应人为干预。
只要是已经保存的数据行,就应该在数据库的生命周期中完整保存,不能删除,也不能随意更改,包括自动编号,这样也就不存在断号的问题。
如果需要删除记录,应该把原记录标记为“已删除”,而不是物理的删除。
自动编号,简洁易用为好,000001,000002,这样的格式就很好,加上前缀,就是累赘。根据实际需要,取合适的长度即可,容易识别、容易比较,用编号查询的时候,也容易输入
基础数据应当尽量减少删除的可能性。关于断号的回收感觉还是没必要,他只是个标识,本身没有太大意义。如果有意义,那这样回收岂不是乱套了?
正式保存后在生成编号,能够减少断号的可能性
前缀还是应当加,在做综合查询和输出或其他什么,还是能一眼看出编号不同的,特别是进行合并,这个作用非常明显