请问数据库设计时,什么时候才用联合主键?谢谢 

解决方案 »

  1.   

    一般是A-B关系表
    比如A=老师,B=课,A-B关系表就是老师的排课表
    不过,建议不使用联合主键,而是将唯一的,和业务无关的字段(比如mysql的自增字段)作为主键,而将业务相关的字段作为unique key
      

  2.   


    项目设计的时候,往往要在 性能、复杂度、时间==方面,做取舍,"联合主键"之类的是比较增加复杂度的东西,尤其是需求有开动。
    我见过及做过的项目,也就是PK、FK、UI这些常见的表字段约束。
      

  3.   

    身份证号可以确定一个人的身份,但是不能用来把他作为主键。
    假设有一张人员表,还有100张表关联到这张表。假如用身份证做主键,前几年升级身份证,15位变18位,那么你有101个字段需要重新设置,没修改一个人员的身份证,就要附带更新100张表。
    而所谓的无关,就是用自增字段或者UUID,或者类似Oracle rowid这样不包含任何业务信息,只代表这条记录在这张表里面位置的信息作为主键。无论业务如何变化,这个字段都不需要做修改(顶多因为业务量变大,修改字段长度,但不需要修改数据本身)。