user表有三个唯中字段
主健ID,用户编号,用户名我这个ID列是不是多余的?
外健是用用户名还是用户编号,我关联的是用户编号

解决方案 »

  1.   

    一般来说,用户编码是惟一的,是不是id不需要,不是的,有些软件的设计,是二者都有的,在程序中有id处理,程序的灵活性会很大,因为id可以由程序来控制,比如一个递增的序列,但是用户编码,虽然要求惟一,但是字符是需要用户起名的。所以程序中是不好控制的。所以控制id更方便些。我觉得用id做主外键关联,还是用用户编码,都可以,就看如何设计了,都是合理的。
    但是外键,不能是用户名呀。
      

  2.   

    主键id,与用户编号都应该是惟一的,用哪个做主键,就看设计了。
    用主键id,在前台程序中的控制可以更灵活。有不同意见吗,交流一下吧。
      

  3.   

    楼主可以参考一个系统表 sysobjects 的设计,id是主键,name是惟一约束另外一个不用用户编号做主键的原因就是,用户编号的长度可以变化(当然,也可以固长,但是不灵活),但是如果用id,一般是int型,速度快,做为聚集索引,int明显优于char/varchar
      

  4.   

    用户编号的组合是否复杂。。 复杂建议用主健ID。。
    主健ID在程序中会更好控制。