学生作业管理系统
主要功能:
1.教师可以通过 所教班级(多个班)或所教科目 .布置作业内容
2.学生通过所学科目.查看尚未完成作业 提交作业
3.教师通过所教班级.或点击已经提交的作业查看 批改作业
4.学生通过科目.查看提交的作业的分数.主要表: 1.学生 2.教师 3.班级 4.科目 5.作业设计表的难点:
1.课程是可以增减的
2.所教班级不止一个班??
3.教师所教科目不止一个,并且教的科目每年可能会变.
4.班级的课程每年也会变提问:
本来我的关系是这样建的教师表:TID TNAME...
课程表:SID SNAME...
班级表:CID CNAME...
临时表:TID SID CID后来朋友建议我将 课程ID 字段内容设计成:2007-J-02-11  
意思代表 2007年的课程 名字叫JAVA 属于02教学组 属于11班级组
 
请问这样设计字段后该如何建立关系表啊.

解决方案 »

  1.   

    1、教师表 与 课程表  建立一个对应表 A(一个教师可以教多门课程 1:N)
     2、学生表 与 A       建立一个对应表 B (学生选课的同时,也于老师建立了对应关系)
     3、学生表 与 班级表  建立一个对应表 C (解决因年度变化,班级与学生多对多的情况)
     4、在作业表里将科目编码作为外键(一个科目可能有多种作业)以上想法,供参考。
      

  2.   

    create table class                                          #班级
    (
    ID smallint(5) unsigned not null auto_increment primary key,
    name varchar(20) not null default '',
    students tinyint(3) unsigned not null default 0             #学生数量
    )
    engine=MyISAM default charset=utf8;
    create table subject                                        #科目
    (
    ID tinyint(3) unsigned not null auto_increment primary key,
    name varchar(20) not null default ''
    )
    engine=MyISAM default charset=utf8;
    create table teacher                                        #教师
    (
    ID smallint(5) unsigned not null auto_increment primary key,
    name varchar(20) not null default ''
    )
    engine=MyISAM default charset=utf8;
    create table relation                                       #教师与所教班级、科目的对应关系
    (
    ID smallint(5) unsigned not null auto_increment primary key,
    class smallint(5) not null default 0,
    SID text                                                    #科目ID列表,例“1,2,3”
    )
    engine=MyISAM default charset=utf8;
    create table student                                        #学生
    (
    ID mediumint(8) unsigned not null auto_increment primary key,
    name varchar(20) not null default '',
    CID smallint(5) not null,                                   #班级ID
    SID text,                                                   #科目ID列表,例“1,2,3”
    index index_CID (CID)
    )
    engine=MyISAM default charset=utf8;
    create table homework                                       #作业
    (
    ID mediumint(8) unsigned not null auto_increment primary key,
    TID smallint(5) unsigned not null,                          #教师ID
    CID smallint(5) unsigned not null,                          #班级ID
    SID tinyint(3) unsigned not null,                           #科目ID
    text text,                                                  #内容
    index index_CID_SID (CID, SID)
    )
    engine=MyISAM default charset=utf8;
    create table homework_submited                              #提交的作业
    (
    ID mediumint(8) unsigned not null auto_increment primary key,
    HID mediumint(8) unsigned not null,                         #作业ID
    SID mediumint(8) unsigned not null,                         #学生ID
    score tinyint(3) unsigned not null,                         #得分
    index index_HID (HID)
    )
    engine=MyISAM default charset=utf8;