我想做一个学生成绩管理系统,但是在数据库分析方面有些困惑,请高手指点。
问题是这样的,在建表方面我不知该建几个表,以下是我的分析:
学生表(存放一些有关学生的基本情况)
字段(学号、姓名、班级号)
班级(班级号、班组名称、班组主任)
教师(教师号、姓名、科室)
课程(课号、课程名称)
成绩(学号、课号、成绩)但是每个班级每次考试的课程都不一样,而且一门课程可以被多个老师代,一个教师还可以代多门课,一个学生在不同的考试中还可能有相同的考试科目,比如上半学期考语文,下半学期也考语文,像这些教师、课程、学生、成绩之间的关系怎么处理呢?希望大家能帮助我分析一下。

解决方案 »

  1.   

    一、
    学生表(学号、姓名、班级号)
    班级(班级号、班组名称、班组主任)
    教师(教师号、姓名、科室)
    课程(课号、课程名称)
    任课表(学期、教师号、班级号、课程号)
    成绩(学号、课号、学期、成绩)
    二、参照SQL实现横排帖
    declare  @sql  varchar(8000)  
    set  @sql  =  'select  学号,姓名,班级,学期'  
    select  @sql  =  @sql  +  ',max(case  科目名称  
    when  '''+科目名称+'''  then  cast(成绩 as varchar(10)) end)   ['+科目名称+']
    ,max(case  科目名称  when  '''+科目名称+'''  then  cast(补考 as varchar(10))  end)  ['+科目名称+'补考]'  
       from  (select  distinct  科目名称  from  成绩表 where 班级='2000电算会计')   as  a  
    select  @sql=@sql+' from  成绩表  where 班级=''2000电算会计'' and 学期=1 group by  学号,姓名,班级,学期'
    exec(@sql)
      

  2.   

    表是可以这样建的,至于报表的时候那就看你写的SQL语句了
      

  3.   

    jsyhello(不认输)    您说的很有道理,但是每个学期有几次考试如:其中考试、期未考试等,而且有的课是100分满分有的课是150满分这又如何解决呢?还有您的SQL的例子是用什么语言写的呢,我刚学编程的看不懂还请赐教.
      

  4.   

    ORACLE支持抽象记录形字段...每个年纪学生可以建立一个相对应该的抽象记录,我推荐一本书..叫<ORACLE8完全参考>..上面的教你怎么分析一个对像并对其存档到数据库
    上面还有说一些有关数据范式的东西..还不错..138RMB
      

  5.   

    建一些基本表,老师清单,学生清单,课程清单。
    建一些关系表,老师->学生,学生->课程,课程->老师....