关于SqlServer数据库中自增型ID的优势及不足的分析

以前一直接触的是Oracle数据库,各种表单的主键只是字符串。换新公司后,新公司用的SqlServer数据库,其中涉及的自增型主键字段着实让我头疼了一段时间。通过在sqlServer中设计各种表单的过程中,对自增型字段的应用有了自己的体会。

优势:自增型字段简单,存储量也不大,进行数据表单的join操作性能也高,对于通过人工构建的树型结构用于存储父节点,确实方便了不少。在做的工程造价管理系统中,构件的成本需要由清单--定额---人材机这样的一个父子关系组成,设计的表单存储的父节点是自增型父节点,这样统一了父节点的数据格式。

劣势:自增型字段是数据库自己生成的字段,存在极大的不稳定性,对于基础数据是绝对不可以用自增型字段的。同样用工程造价管理系统为例,在造价管理系统中有构件树,这是整个系统中造价的基础数据,如果用自增型字段做主键,一旦树有所删除和修改操作,那么ID会跟随一起变化,与这个数据有关联的其他业务数据就一同不可用,造成数据混乱,这是所有设计数据库人员最不想看到的结果。

还有一个大问题就是数据库迁移,这时所有的自增型ID也会变化,当然sqlServer应该有相应的技术进行弥补,但是自增型ID的使用还是慎重考虑啊!!!!!


你可能感兴趣的:(关于SqlServer数据库中自增型ID的优势及不足的分析)