成绩表里面是放课程信息表的一个id,然后做主外键关联好还是直接放一个课程名称,不和课程表做关联好?
如果做关联,那么删除一个课程,就会影响成绩表的记录,可是以前的成绩应该要保留下来,删除一个课程,不应该也要删除对应的成绩才对吧

解决方案 »

  1.   

    删除分 物理删除 和 逻辑删除
    你可以在课程表里加个字段 status,正常情况为1,删除的时候把这个字段update成 0
    在所有关联课程表的搜索查询里加 and status = 1
      

  2.   

    因为你在成绩表里面存放课程ID,然后另外在课程表里面存放课程名称,这样做在很大程度上能够减少数据的冗余(如果用直接在成绩表里放课程名的话,当有很多学生都修这门课时,数据冗余比较大),所以肯定要这么做的!可以不用主外键关联啊,你这样设计的表,只是在查询的时候,可以查询出某门课程和其对应的成绩,所以可以在查询的时候进行联接,就可以搞定!假设课程表:course(id,name),成绩表:score(stu_id,sub_id,int score),用下面的语句完全就可以搞定!    select s.stu_id,c.name,s.score from course as c,score as s where s.sub_id=c.id