用编码做主键好还是单独开一个主键字段好
以前都是用编码做主键,网上很多文章都反对这样,看金蝶KIS的数据库也是单独开一个主键字段现在想改成这样
请有经验的谈谈该不该用编码做主键 --------------------编程问答-------------------- 如果可能修改值,那么就尽量不要用它做主键。
例如订单编号,如果有可能发现录入错误了需要修改,那么通常就不会将它作为主键。这是从理论上总结出来的一个条款。
不过,任何编程上的事情都没有绝对。例如就算是把订单编号作为主键了,而且也需要修改订单编号,从而我不得不修改程序,但是我强大的自动化测试过程(每天上万次随机生成不同测试数据来进行测试)可以保证我对代码的修改可以非常完善,而且也花不了几十分钟时间就修改好了,那么也不是不可以用订单编号作为主键。 --------------------编程问答-------------------- 比如说在一个零售业程序中,你用商品条形码或者店内条形码作为商品的主键,这可能说明你不知道同一个商品往往会有不同条形码的情况(例如厂商申请了新的包装,但是价格没有变化)。
但是在别人嘲笑你的时候,如果你拿出“另外一套理论”,说明你是如何在商品管理、调货和销售管理上处理好不同编码的业务操作流程的,你说不定其实可以证明你比别人更专业。别人只会人云亦云,而你可以做到更加精细化的管理(同时又可以更方便地合并不同主键的商品的报表),这时候你又未尝不可用商品条形码做商品的主键。
总之,这个与经验有关。不同的产品有不同的价值,往往就是在于差别上,在于不落俗套上。
但是如果没有深入研究之前,那么还是先按照最俗的办法去设计。 --------------------编程问答-------------------- 那你们是否新开一个字段做主键 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
当然应该这样。
主键应该和业务无关。如果编码是唯一的,加上唯一约束即可。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 自己做个主键吧,这样少返工
补充:.NET技术 , C#