某校的OA系统里的一个成绩管理模块里的一件小事情...数据:
    学生信息表:        学籍号(PK)   姓名   性别   入学时间 .....
        2008010001   张三    男    2008-09-01
        2008010002   李四    男    2008-09-01         .....    课程信息表:        课程名称       课程代码(PK)    ....
        现代小说欣赏     09001
        简明数字电路     01001
         ......    成绩表:        学籍号       课程代码    成绩    考试ID
         2008010001   09001      99         1
         2008010001   01001      80         1
         2008010002   09001      70         ...
         2008010002   01001      100        ...
         ......    考试信息表:
        ID(PK)     考试名称           考试时间
          1         唐僧考试         2007-06-07
         .......
        
这些表的关系并不复杂:学生信息表跟课程信息表是多对多的,学生表跟成绩表是1对多,课程信息表跟成绩表也是1对多的,这没什么好说的,问题出在系统提供的历史成绩查询这里...
情景:
    由于原来学校的教务管理员换了新人,新人上来使用这套系统,大刀阔斧,把目前根本不开设的课程砍掉了...问题:
    这会发生什么问题呢?大家一眼就能看出来,课程给砍掉了的话,当你查询历史成绩就会出问题,给砍掉的课程在历史成绩中消失了...解决方案:
    狗歌了一翻,大家也都是意见不一,有人把课程信息给加上考试信息表里的ID字段,每次考试都保存这次考试的课程配置
    还有人干脆把课程信息表作为一个变量 放进考试信息表里的一个字段里,这样每次考试就跟课程信息挂钩了...可是,我总感觉这样解决问题不太正确,历史数据跟现在的数据随着时间的变迁很可能不一样,甚至有时候基表的字段都会发生变化,不知道大家有什么好的解决办法,难道需要传说中的元数据????这东西目前成功应用的例子也没找到几个啊希望大家给点意见,小弟道行太浅,望大侠点拨一二,在此谢过:)