数据库程序设计教务辅助管理系统.docx
- 文档编号:11575200
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:31
- 大小:23.72KB
数据库程序设计教务辅助管理系统.docx
《数据库程序设计教务辅助管理系统.docx》由会员分享,可在线阅读,更多相关《数据库程序设计教务辅助管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
数据库程序设计教务辅助管理系统
数据库设计实例教务管理系统
数据库实验七数据库设计
题目要求:
设计一个教务管理系统。
要求管理包括:
学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。
具体考核方法根据自己了解的实际情况处理。
假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。
在初期设计时,先关注与教务系统有关的数据。
在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。
一、需求分析
1、 根据分析可以画出该教务管理系统的数据流图:
学生
选课
上课
考试
测评
选课单
允许考试
成绩单
老师档案
课程简介
教室安排
试卷
考场安排
测评报告单
学生名单
教师
选定教材
申报
课表
2、 数据字典
数据结构:
学生
含义说明:
是教务管理系统的一个核心数据结构,定义了学生的有关信息
组成:
学号、姓名
数据项:
学号
含义说明:
唯一标识每一个学生
别名:
学生编号
类型:
字符型
长度:
9位
取值范围:
190000000–999999999
取值含义:
前四位表明学生所在年级,后五位安顺序编号
数据项:
姓名
含义说明:
表示学生的姓名
类型:
字符型
长度:
10位
取值范围:
任意字符
数据结构:
教师
含义说明:
教务管理系统的核心数据结构之一,定义了教师的有关信息
组成:
教师号,教师姓名
数据项:
教师号
含义说明:
教师的编号
类型:
字符型
长度:
5位
取值范围:
10000–99999
数据项:
教师姓名
含义说明:
教师的姓名
类型:
字符型
长度:
10位
取值范围:
任意合法的字符
数据结构:
课程
含义说明:
教务管理系统的核心数据结构之一,定义了课程的有关信息
组成:
课程号,课程名,课程描述,教师,教室,教科书,学分
数据项:
课程号
含义说明:
课程的编号
类型:
字符型
长度:
4
取值范围:
0001–9999
数据项:
课序号
含义说明:
对于同一课程,由不同老师教授,用课序号来区分
类型:
字符型
长度:
2
取值范围:
01–99
数据项:
课程名
含义说明:
课程的名称
类型:
字符型
长度:
10
取值范围:
任意合法的字符
数据项:
课程描述
含义说明:
课程内容的基本描述
类型:
字符型
长度:
200
取值范围:
任意合法字符
数据项:
教科书
含义说明:
课程所用的教科书
类型:
字符型
长度:
20
取值范围:
任意合法字符
数据项:
学分
含义说明:
课程的学分
类型:
整型
长度:
1
取值范围:
1-9
数据结构:
教室
含义说明:
上课所用的教室
组成:
教室编号,教室地址,教室容量
数据项:
教室编号
含义说明:
教室的编号
类型:
字符
长度:
5
取值范围:
00001-99999
数据项:
教室地址
含义说明:
标明教室的地址
类型:
字符
长度:
30
取值范围:
任意合法的字符
数据项:
教室容量
含义说明:
教室的容纳学生的数量
类型:
整型
取值范围:
正整数
数据结构:
选课记录
含义说明:
纪录学生选课的纪录
组成:
学生,课程,成绩
数据项:
成绩
含义说明:
选课学生本学期的成绩
类型:
浮点数
范围:
0.0–100.0
处理过程:
分配教室
说明:
为所有课程分配上课教室
输入:
课程,教室
输出:
教室安排
处理:
学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。
处理过程:
分配考场
说明:
在考试日期,为所有课程分配考场
输入:
课程,教室
输出:
考场安排
处理:
为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。
数据存储:
成绩单
说明:
记录学生本学期所有课程成绩
流入数据流:
学生所有的选课记录
流出数据流:
学生的成绩单
数据量:
由学生的人数决定
存取方式:
随机存取
二、概念结构设计
1、根据需求分析画出E-R图:
选修
学生
教师
课程
m
n
讲授
1
n
教科书
n
成绩
教室
开设
1
n
2、 根据E-R图写出各个实体的属性描述
学生:
{学号,姓名}
课程:
{课程号,课程名,课程描述,学分}
教师:
{教师号,教师名,课程数}
教室:
{教室编号,地址,容量}
3、 视图的集成
假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:
性别,所属专业,所属班级。
为了使两个实体保持一致,对两个实体取并集得到新的学生实体:
学生:
{学号,姓名,性别,专业,班级}
三、逻辑结构设计
1、 由E-R图向数据模型的转换
一个实体型转换为一个关系模式。
实体的属性就是关系的属性。
实体的码就是关系的码。
所以,E-R图中的属性描述可直接转换为相应的关系模式。
2、 对于剩余的一对多和多对多联系可以如下表示
学生-课程:
{学号,课程号,课序号,成绩}
课程-教师:
{课程号,课序号,教师号}
课程-教科书:
{课程号,课序号,教科书}
教室-课程:
{教室号,时间,课程号,课序号}
其中课程-教师与课程-教科书具有相同的主码,可以合并成一个关系
教学:
{课程号,课序号,教师号,教科书}
最后得到的关系模式为
学生:
{学号,姓名,性别,专业,班级}
课程:
{课程号,课程名,课程描述,学分}
教师:
{教师号,教师名,课程数}
教室:
{教室号,地址,容量}
学生-课程:
{学号,课程号,课序号,成绩}
教学:
{课程号,课序号,教师号,教科书}
教室-课程:
{教室号,时间,课程号,课序号}
3、 用户外模式
根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。
测评{学号,学生姓名,平均成绩}
4、 根据设计写出相应的SQL语句:
CREATETABLEstudent
(
SnoVARCHAR(9)CONSTRAINTpk_studentPRIMARYKEY,
SnameVARCHAR(10)NOTNULL,
SexVARCHAR
(1)NOTNULL,
MajorVARCHAR(10)NOTNULL,
ClassVARCHAR(10)NOTNULL,
CHECK(Sex='f'ORSex='m')
)
CREATETABLEcourse
(
CnoVARCHAR(4)CONSTRAINTpk_coursePRIMARYKEY,
CnameVARCHAR(10)NOTNULL,
DescribeVARCHAR(200),
MarkINTEGER
)
CREATETABLEteacher
(
TnoVARCHAR(5)CONSTRAINTteacher_pkPRIMARYKEY,
TnameVARCHAR(10)NOTNULL,
CcntINTEGERNOTNULLDEFAULT0
)
CREATETABLEclassroom
(
RnoVARCHAR(5)CONSTRAINTpk_classroomPRIMARYKEY,
LocateVARCHAR(30)NOTNULL,
CapINTEGER
CHECK(Cap>0)
)
CREATETABLEtech
(
CnoVARCHAR(4)NOTNULLCONSTRAINTfk_course_cnoFOREIGNKEYREFERENCEScourse(Cno)
ONUPDATECASCADE--级联更新
ONDELETECASCADE,--级联删除
SCnoVARCHAR
(2)NOTNULL,
TnoVARCHAR(5)CONSTRAINTfk_teacher_tnoFOREIGNKEYREFERENCESteacher(Tno)
ONUPDATECASCADE
ONDELETECASCADE,
BookVARCHAR(20)
CONSTRAINTpk_techPRIMARYKEY(Cno,SCno)
)
CREATETABLESC
(
SnoVARCHAR(9)NOTNULLCONSTRAINTfk_student_snoFOREIGNKEYREFERENCESstudent(Sno)
ONUPDATECASCADE
ONDELETECASCADE,
CnoVARCHAR(4)NOTNULLCONSTRAINTfk_sc_course_cnoFOREIGNKEYREFERENCEScourse(Cno)
ONUPDATECASCADE
ONDELETECASCADE,
SCnoVARCHAR
(2)NOTNULL,
ScoreFLOAT
CONSTRAINTpk_scPRIMARYKEY(Sno,Cno,SCno)
)
CREATETABLERC
(
RnoVARCHAR(5)CONSTRAINTfk_classroom_rnoFOREIGNKEYREFERENCESclassroom(Rno)
ONUPDATECASCADE
ONDELETECASCADE,
TimeDATETIME,
CnoVARCHAR(4)NOTNULLCONSTRAINTfk_rc_course_cnoFOREIGNKEYREFERENCEScourse(Cno)
ONUPDATECASCADE
ONDELETECASCADE,
SCnoVARCHAR
(2)NOTNULL
CONSTRAINTpk_rcPRIMARYKEY(Rno,Time)
)
为进行综合测评增加一个外模式
CREATEVIEWassessAS
SELECTSC.sno,sname,AVG(score)asaverageFROMSC,Student
whereSC.sno=student.sno
GROUPBYSC.sno,sname
为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。
ALTERTABLEsc
ADDCONSTRAINTfk_sc_techFOREIGNKEY(Cno,SCno)REFERENCEStech(Cno,SCno)
ONUPDATECASCADE
ONDELETECASCADE
为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。
此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器
CREATETRIGGERworkcnterOntech
AFTERINSERT,UPDATE,DELETE
AS
BEGIN
DECLARE@TVARCHAR(5)
IFEXISTS
(
SELECTTOP1TnoFROMINSERTED
)
BEGIN
SET@T=(SELECTTOP1TnoFROMINSERTED)
UPDATEteacherSETCcnt=Ccnt+1WHERETno=@T
END
IFEXISTS
(
SELECTTOP1TnoFROMDELETED
)
BEGIN
SET@T=(SELECTTOP1TnoFROMDELETED)
UPDATEteacherSETCcnt=Ccnt-1WHERETno=@T
END
END
关于课程容量:
如何保证选课的学生数量不超过教室的容量?
初步解决办法是:
在学生选课时建立暂时不考虑容量问题,都加入一个临时的SC表中。
然后,在选课结束后将未超额的记录直接加入SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。
抽签的功能较适合用顶层的高级语言来实现。
在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。
所以,在数据库系统中,没有对SC表的插入操作进行约束。
一、需求分析
1、根据分析可以画出该教务管理系统的数据流图:
2、数据字典
数据结构:
学生
含义说明:
是教务管理系统的一个核心数据结构,定义了学生的有关信息
组成:
学号、姓名
数据项:
学号
含义说明:
唯一标识每一个学生
别名:
学生编号
类型:
字符型
长度:
9位
取值范围:
190000000–999999999
取值含义:
前四位表明学生所在年级,后五位安顺序编号
数据项:
姓名
含义说明:
表示学生的姓名
类型:
字符型
长度:
10位
取值范围:
任意字符
数据结构:
教师
含义说明:
教务管理系统的核心数据结构之一,定义了教师的有关信息
组成:
教师号,教师姓名
数据项:
教师号
含义说明:
教师的编号
类型:
字符型
长度:
5位
取值范围:
10000–99999
数据项:
教师姓名
含义说明:
教师的姓名
类型:
字符型
长度:
10位
取值范围:
任意合法的字符
数据结构:
课程
含义说明:
教务管理系统的核心数据结构之一,定义了课程的有关信息
组成:
课程号,课程名,课程描述,教师,教室,教科书,学分
数据项:
课程号
含义说明:
课程的编号
类型:
字符型
长度:
4
取值范围:
0001–9999
数据项:
课序号
含义说明:
对于同一课程,由不同老师教授,用课序号来区分
类型:
字符型
长度:
2
取值范围:
01–99
数据项:
课程名
含义说明:
课程的名称
类型:
字符型
长度:
10
取值范围:
任意合法的字符
数据项:
课程描述
含义说明:
课程内容的基本描述
类型:
字符型
长度:
200
取值范围:
任意合法字符
数据项:
教科书
含义说明:
课程所用的教科书
类型:
字符型
长度:
20
取值范围:
任意合法字符
数据项:
学分
含义说明:
课程的学分
类型:
整型
长度:
1
取值范围:
1-9
数据结构:
教室
含义说明:
上课所用的教室
组成:
教室编号,教室地址,教室容量
数据项:
教室编号
含义说明:
教室的编号
类型:
字符
长度:
5
取值范围:
00001-99999
数据项:
教室地址
含义说明:
标明教室的地址
类型:
字符
长度:
30
取值范围:
任意合法的字符
数据项:
教室容量
含义说明:
教室的容纳学生的数量
类型:
整型
取值范围:
正整数
数据结构:
选课记录
含义说明:
纪录学生选课的纪录
组成:
学生,课程,成绩
数据项:
成绩
含义说明:
选课学生本学期的成绩
类型:
浮点数
范围:
0.0–100.0
处理过程:
分配教室
说明:
为所有课程分配上课教室
输入:
课程,教室
输出:
教室安排
处理:
学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。
处理过程:
分配考场
说明:
在考试日期,为所有课程分配考场
输入:
课程,教室
输出:
考场安排
处理:
为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。
数据存储:
成绩单
说明:
记录学生本学期所有课程成绩
流入数据流:
学生所有的选课记录
流出数据流:
学生的成绩单
数据量:
由学生的人数决定
存取方式:
随机存取
数据库设计---教务管理系统
来源:
互联网 版权归原作者所有时间:
2009-12-19
course_cnoFOREIGNKEYREFERENCEScourse(Cno)
ONUPDATECASCADE
ONDELETECASCADE,
SCnoVARCHAR
(2)NOTNULL,
ScoreFLOAT
CONSTRAINTpk_scPRIMARYKEY(Sno,Cno,SCno)
)
CREATETABLERC
(
RnoVARCHAR(5)CONSTRAINTfk_classroom_rnoFOREIGNKEYREFERENCESclassroom(Rno)
ONUPDATECASCADE
ONDELETECASCADE,
TimeDATETIME,
CnoVARCHAR(4)NOTNULLCONSTRAINTfk_rc_course_cnoFOREIGNKEYREFERENCEScourse(Cno)
ONUPDATECASCADE
ONDELETECASCADE,
SCnoVARCHAR
(2)NOTNULL
CONSTRAINTpk_rcPRIMARYKEY(Rno,Time)
)
为入行综合测评增加一个外模式
CREATEVIEWassessAS
SELECTSC.sno,sname,AVG(score)asaverageFROMSC,Student
whereSC.sno=student.sno
GROUPBYSC.sno,sname
为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。
ALTERTABLEsc
ADDCONSTRAINTfk_sc_techFOREIGNKEY(Cno,SCno)REFERENCEStech(Cno,SCno)
ONUPDATECASCADE
ONDELETECASCADE
为了在插渗入渗出一个新课程时能级联更新教师的工作量,增加一个触发器。
此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器
CREATETRIGGERworkcnterOntech
AFTERINSERT,UPDATE,DELETE
AS
BEGIN
DECLARE@TVARCHAR(5)
IFEXISTS
(
SELECTTOP1TnoFROMINSERTED
)
BEGIN
SET@T=(SELECTTOP1TnoFROMINSERTED)
UPDATEteacherSETCcnt=Ccnt1WHERETno=@T
END
IFEXISTS
(
SELECTTOP1TnoFROMDELETED
)
BEGIN
SET@T=(SELECTTOP1TnoFROMDELETED)
UPDATEteacherSETCcnt=Ccnt-1WHERETno=@T
END
END
关于课程容量:
如何保证选课的学生数量不超过教室的容量?
初步解决办法是:
在学生选课时建立暂时不考虑容量问题,都加渗透一个临时的SC表中。
然后,在选课结束后将未超额的记录直接加渗透SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。
抽签的功能较适合用顶层的高级语言来实现。
在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。
所以,在数据库系统中,没有对SC表的插渗入渗出操作进行约束。
本文来自CSDN博客,转载请标明出处:
966.aspx
数据库设计---教务管理系统
2009年12月03日星期四11:
04P.M.
题目要求:
设计一个教务管理系统。
要求管理包括:
学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。
具体考核方法根据自己了解的实际情况处理。
假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。
在初期设计时,先关注与教务系统有关的数据。
在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。
一、需求分析
1、根据分析可以画出该教务管理系统的数据流图:
学生
选课
上课
考试
测评
选课单
允许考试
成绩单
老师档案
课程简介
教室安排
试卷
考场安排
测评报告单
学生名单
教师
选定教材
申报
课表
2、数据字典
数据结构:
学生
含义说明:
是教务管理系统的一个核心数据结构,定义了学生的有关信息
组成:
学号、姓名
数据项:
学号
含义说明:
唯一标识每一个学生
别名:
学生编号
类型:
字符型
长度:
9位
取值范围:
190000000–999999999
取值含义:
前四位表明学生所在年级,后五位安顺序编号
数据项:
姓名
含义说明:
表示学生的姓名
类型:
字符型
长度:
10位
取值范围:
任意字符
数据结构:
教师
含义说明:
教务管理系统的核心数据结构之一,定义了教师的有关信息
组成:
教师号,教师姓名
数据项:
教师号
含义说明:
教师的编号
类型:
字符型
长度:
5位
取值范围:
10000–99999
数据项:
教师姓名
含义说明:
教师的姓名
类型:
字符型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序设计 教务 辅助 管理 系统