表结构:
-----------------------------------------
ID(自增)    NO(编号)唯一       NAME......问题:1.主键可以涉及业务吗 
             我理解:主键是不能和业务相关的(我们现在不讨论实际应用,只说理论)
      2.主键是 ID还是NO呢
             我的理解:NO(编号)
      3.既然主键不能和业务相关,最理想化的表结构 到底怎么设计?

解决方案 »

  1.   

    1.最好不要。
    2.一般叫ID(Identify,标识),不过是个符号,要叫NO也行
    3.3NF+一定的冗余。个人理解
      

  2.   


    我的意思是 主键 是自增的那个ID呢 还是组合而成的唯一编号NO
      

  3.   


    一般用自增的那个ID。主键一般用整型数字型的,这种类型的数据库处理起来快。组合而成的那个NO如果是唯一的,可以在其上建unique index。
      

  4.   

    主键最好不要去关联业务的数据,就用ID吧,不要和NO去关联的好,
    要是表关系多,万一将来你的NO号要改变就会发现很麻烦了~
      

  5.   

    主键一般用自增的
    且唯一的int类型的
    当然也可以用varchar类型的
    不过用varchar型的大都是随机的
    组合的话
    以后用起来会比较麻烦
      

  6.   

    理论上 主键不是用VARCHAR型吗 更好吗  
      

  7.   

    主键肯定不能和业务相关,它本身就是针对数据库才存在的,而NO(编号),你根本无法确定它到底会是什么,甚至可能包括中文或者特殊字符,它本身就是针对业务层的。你如果把它当主键,这本身就是一个逻辑耦合,可能在你以后发现问题的时候,牵扯到你所有的代码逻辑。
    比如编号A的用户单号作废,重新提交A单。你说你其他的相关数据改不改。改,失去历史记述。不改,单号又相同。类似问题将会业务最初的逻辑混杂,而产生非常多的工作量。