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