急速给分,但是答案要把道理说透。(100分)

大学生成绩管理系统
sql server2000库中的学生成绩库

问题:下面两种设计库方法那种更有效,怎么改进?有没有更好的解决方法?希望做
过此方面的高手门不吝指点,在下感激不尽!
大学生生的成绩如果都放在一个成绩表中,那么这个表有100多个字段,
而对每一个元组来说只有10个左右的字段有用(因为每个学生一个学期只有
这么多的课程),在查找某个学生的成绩时根据系别来投影成绩字段。
大学生的成绩按系别存放,这样就有了10多个成绩库文件,然后在根据
用户给定条件来判定选择选用哪个成绩库来查询。
---------------------------------------------------------------

1、成绩表还是成绩库文件必须先明确,我想应该是成绩表。
2、两个设计都有问题。冗余都不小。
3、我人为地方案:
1)学生表:有一个字段表示所在的系,是否建立系表看情况决定。
2)课程表(略)
3)学生-课程表(或者叫成绩表):这是一个对应表,表示哪些学生学哪些课,成绩是多少,主要字段是学生ID、课程ID、成绩;可能还有的主要字段是学期。这个学生-课程表可以考虑按系分成多个表,如果数据量真的特别大,需要提高查询速度。

---------------------------------------------------------------

使用这个表:

学号、系别、学期、课程、成绩

每个考生每学期有几个记录,以学号、系别、学期、课程作为主键

---------------------------------------------------------------

你需要重点考虑使用频度和数据量,如果都不大的话,有些冗余倒没关系,也不用分的太细,但是如果大,则需要好好划分一下,做三范式结构。CSDNM(CSDN经理(信就不假) 说的思路不错,你可以顺着下去。
成绩表要尽量精简,因为它的使用最频繁,多用外键和索引吧。
---------------------------------------------------------------

我总觉得怪怪的,表文件是什么意思?是表的意思么?
为什么不做成--年份,学生,课程,成绩--这样的方式来记录呢,何必将所有的课程都横向放到字段上呢?不理解。
---------------------------------------------------------------

我建议在前台最好不要对库结构进行操作,如果有这种需要,那么你可能违反了数据库设计的规范
---------------------------------------------------------------

我认为,如果使用同一个表将使工作效率降低,使用多个表可以很好的提高效率,编程难度工作量不会增大
---------------------------------------------------------------

同意hillhx(曾经的曾经) 的做法
成绩表:年份,学生,课程,成绩
学生表:学生,系别,...
课程表:系,课程

---------------------------------------------------------------

大学生的成绩按系别存放,这样就有了10多个成绩库文件,然后在根据
用户给定条件来判定选择选用哪个成绩库来查询?

为什么会多10多个成绩库文件?你为什么要分库呢?直接加一个系别ID字段不就得了!
---------------------------------------------------------------

table1:(STUDENT INFO)
colum:stu_id,stu_name,department,major,grade
table2:(COURSE INFO)
column:Firstcourse,SecondCourse,ThirdCourse,......department,major,grade.
As a usual,there will be about 8 major subjects and 8 affiliate courses during one's single year study.At the same time,everybody in the same class will share the same course.
table3:(score)
column:stu_id,firstscore,SecondScore,ThirdScore,.....,semester.
Or,if one can choose the affiliate course as he like,the table3 colum would added:Aff1name,aff1score,aff2name.aff2score.....
Else,to avoid redundance,table2 maybe seperate into 2 tables,one record the subject which is bound with subject_id,then the other table will use the id to indicate courses.
---------------------------------------------------------------

三范式结构就是符合第三范式的意思吧?!

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus