解决方案 »

  1.   

    成绩表里的cid sid是作为复合主键还是作为外键呢
      

  2.   

    可以做为复合主键.
    也可以做为外键,不过外键是要分开来的,也就是cis做外键对应course的cid,sid做外键对应student的sid,分开两个外键
      

  3.   

    但是这样成绩表中有cid sid两个主键 准确的说法应该是:成绩表的 PK 包括 cid , sid 这两列;在 m:n 的关系表中,这个属于正常现象。业务发生变化,这个要看变化多大,如果只是增加一些属性,比如:一个学生第一次没有考到 60 分,又被要求重修,肯定会在这张表中再增加一行,这时就要增加另一张表来记录考试信息,再到成绩表增加一列,来标识是哪次考试,相当于PK成三列了。这些改动大的需求,应该在下个版本中完善,不能想加就加,不然你的程序没法写了。
      

  4.   

    我又改了下成绩表,加了一个id为主键,sid,cid为外键这样怎么样
      

  5.   

    可以。只是你新加一个 id , 这样就不能保证sid 和 cid 一样了,还是建议再加一个 UNIQUE INDEX ,至少包括 sid 和 cid 这两列;