数据库程序设计教务辅助管理系统.docx

上传人:b****5 文档编号:11575200 上传时间:2023-03-19 格式:DOCX 页数:31 大小:23.72KB
下载 相关 举报
数据库程序设计教务辅助管理系统.docx_第1页
第1页 / 共31页
数据库程序设计教务辅助管理系统.docx_第2页
第2页 / 共31页
数据库程序设计教务辅助管理系统.docx_第3页
第3页 / 共31页
数据库程序设计教务辅助管理系统.docx_第4页
第4页 / 共31页
数据库程序设计教务辅助管理系统.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

数据库程序设计教务辅助管理系统.docx

《数据库程序设计教务辅助管理系统.docx》由会员分享,可在线阅读,更多相关《数据库程序设计教务辅助管理系统.docx(31页珍藏版)》请在冰豆网上搜索。

数据库程序设计教务辅助管理系统.docx

数据库程序设计教务辅助管理系统

数据库设计实例教务管理系统

数据库实验七数据库设计

 

题目要求:

设计一个教务管理系统。

要求管理包括:

学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。

具体考核方法根据自己了解的实际情况处理。

假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。

在初期设计时,先关注与教务系统有关的数据。

在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。

 

一、需求分析

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

             

             数据项:

教师姓名

             含义说明:

教师的姓名

             类型:

字符型

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1