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

解决方案 »

  1.   

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

  2.   

    回CSDNM(CSDN经理(信就不假) 我说的成绩表是整个学生成绩管理库中的一个表:
    1,整个库如下:◇在校生表
                  ◇毕业生表
                  ◇在校生资料表
                  ◇毕业生资料表
                  ◆学生成绩表组
                  ◆学生课程表组
                  ◇其他表组
    2,客户端和服务器端用pb开发,使用三层结构
    3,对学生成绩采用年度结算的方法,大概意思就是每次结算在一个学年后,
    生成新的课程表和成绩表,表名按年份来命名,比如sc2002,course2002
    然后这个系统的主变量都加一,相当于自动选择新生成的表,这是主要的。
    4每年都可以输入新的课程到课程表中,系统自动对应;
    5现在就是学生的成绩表不好做,我找不出最好的方法,第二种方法肯定效率
    高点,不过按系分那么每年一下要多10多个成绩表文件,我怕程序复杂度太高了
    也就是说我要做个:select activename
                     select active database
    模型,而且约束条件多多!有什么好办法没有,做过的朋友你是怎么做的!
      

  3.   

    多谢上面几位高手的指点,我这是第一次开发sql 2000的软件,边学边做
    MATBOY能不能讲下[三范式结构]的基本概念,指教!
      

  4.   

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

  5.   

    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.