数据库设计问题。崩溃ING...
学生作业管理系统
主要功能:
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、教师表 与 课程表 建立一个对应表 A(一个教师可以教多门课程 1:N)
2、学生表 与 A 建立一个对应表 B (学生选课的同时,也于老师建立了对应关系)
3、学生表 与 班级表 建立一个对应表 C (解决因年度变化,班级与学生多对多的情况)
4、在作业表里将科目编码作为外键(一个科目可能有多种作业)
以上想法,供参考。
------解决方案--------------------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;