现有三个表:
爷爷类表,列GrandID,GrandName
父类表:列GrandID,FatherID,FatherName
子类表:列GrandID,FatherID,SonID,SunName对于爷爷类表可以将GrandID作为主键,现在的问题是,对于父表和子表,是将GrandID,FatherID,SonID作为联合主键好呢,还是加入一个自增id作为主键好?这三个表只是举个简单例子,实际表比较复杂

解决方案 »

  1.   

    FatherID、SonID不是唯一的吗?能用他们做不?
    如果不能,我会另外生成一个主键。
      

  2.   


    子类表里sid是什么,是会重复的么,子类表需要有自己的PK比较好,主要是应用起来比较方便。
      

  3.   


    一般是:爷爷表:GRANDID为主键
            父类表:FATHERID为主键,grandid为外键
            子类表:SONid为主键,grandid为外键,fatherid为外键
      

  4.   

    说明一下,父表里GrandID,FatherID唯一,子表里GrandID,FatherID,SonID唯一,我原来喜欢用联合主键,可是容易报错,就想问下大家通常都怎么做
      

  5.   


    父类表FATHERID不唯一,GrandID,FatherID联合才唯一,子表也是
      

  6.   

    爷爷类表,列GrandID,GrandName 
    父类表:列id,GrandID,FatherID,FatherName 
    子类表:列id,GrandID,FatherID,SonID,SunName 其实一个表就行了吧
    人类表
    id,fatherid,name
      

  7.   

    个人认为,在很多的时候,为每个表增加一个单独,单纯的,无业务意义的主键是很好的办法.
    http://www.cnblogs.com/jiangshaofen/archive/2007/04/18/717785.html