排课系统数据库设计说明.docx
《排课系统数据库设计说明.docx》由会员分享,可在线阅读,更多相关《排课系统数据库设计说明.docx(13页珍藏版)》请在冰豆网上搜索。
排课系统数据库设计说明
JIANGXIAGRICULTURALUNIVERSITY
本科课程实训
题目:
关于学生排课系统的数据库设计
学院:
软件学院
姓名:
肖力果
学号:
2010146620101467
专业:
软件工程
班级:
软件1001
指导教师:
黄欣
2011年12月
引言:
由于当下大学学校班级及专业较多,我们学校的实用的帮助班级排课的一个系统也有迫切需求。
基于用SQLServer设计的数库的排课系统也有很大的需要,在本实训作业中,将会针对该实际情况,对我校农业大学的学生上课排课系统的数据库进行设计。
该设计工作由双人合作的形式完成,对一个学期以来数据库系统概论的学习进行巩固和联系。
该排课系统主要设计流程工作大概分为三个阶段:
需求分析,概念结构设计,逻辑结构设计,也将设计的物理结构和数据库实施维护从略讲述,着重在需求分析上的收集数据形成实体及其联系的数据字典完成,在需求分析的基础上完成数据流图的基本设计;在概念结构设计上完成数据的抽象形成各子系统的E-R图,最后在解决冲突的分析下完成基本总实体-联系(E-R图);在逻辑结构设计阶段中完成数据的抽象及实体的形成,实体的规分析及完整性约束,以及设计阶段的有关触发器的创建分析和实现……最后简要对数据库设计的步骤的物理设计和实施阶段简要概述。
课程设计为实验周两天完成,使用流行的SQLServer2005数据库系统完成基本设计工作,通过数据库管理系统(DBMS)、T/SQL基本语句实现数据库表的创建,表的完整性约束,表的视图及触发器的创建,基本工作都按照实训题要求基本完成。
一、需求分析
需求分析是数据库设计的必要和首要设计阶段,将会影响以后数据库设计的延续和质量,需求分析方法也很多,最重要是形成有实用价值的实际性的数据字典和数据流图。
在该排课系统的需求分析阶段,主要是通过询问和自己所掌握的关于该系统的数据联系方式和工作方式,形成了关于该系统的数据字典和数据流图。
1.1需求表述
1.1.1基本功能描述
排课系统的数据库设计主要完成工作有:
1、数据库管理员对数据的录入和相关完整性条件约束的建立,
2、数据库相关的触发器与存储过程对数据库中数据的联系的管理;
3、执行程序能够高效率地完成数据处理和调用;
4、能够通过DBMS建立一系列视图来更方便的操作数据库。
1.1.2开发技术描述
开发工具:
MicrosoftSQLServer2005
SQLServer2005是microsoft公司推出的数据库管理系统,该版本继承了SQLServer2000版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows2000电脑到运行MicrosoftWindowsXP的大型多处理器的服务器等多种平台使用。
本实验中最终将使用MicrosoftSQLServer2005数据库管理系统将我们设计的数据库实现。
1.2分析形成初步数据字典
数据字典(DataDictionary,DD)是数据库设计需求分析阶段后通过科学的处理方法得到的该系统中各类数据描述的集合,也是进行详细数据收集和数据分析所获得的主要成果,它在数据库设计中占有恨重要的地位。
数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,以下将把分析收集的数据及其结构列出:
1、课程相关数据(表1)
字段名称
说明
功能
数据类型
宽度
kcdh
课程代号
表示该课程的一个代号
int
kcm
课程名
这个课程的名称
char
8
kclb
课程类别
该课程的上课形式(教室类)
tinyint
注:
教室类别中的tinyint从1~4分别代表取值为普通教室、多媒体教室、半多媒体教室、实验机房,也可以由具体其它教师类别进行扩充。
2、班级数据(表2)
字段名称
说明
功能
数据类型
宽度
bjdh
班级代号
代表这个班级的(表示院系)
int
11
bjmc
班级名称
表示这个班级的名字
char
8
bjrs
班级人数
该班级包括的人数
int
11
3、教师数据(表3)
字段名称
说明
功能
数据类型
宽度
js_dh
教师代号
老师的代码
int
11
jsxm
教师
教师的名字
char
10
jszc
教师职称
反映了这个老师的职称
char
10
jsxb
教师性别
表示老师的性别
char
2
4、教室数据(表4)
字段名称
说明
功能
数据类型
宽度
jsdh
教室代号
表示这个教室位置
int
11
jsgm
教室规模
表示这个教室可以容纳的人户
int
jslb
教室类别
表示是否有多媒体设置
int
注:
教室类别中的tinyint从1~4分别代表取值为普通教室、多媒体教室、半多媒体教室、实验机房,也可以由具体其它教师类别进行扩充。
5、班级课程数据(表5)
字段名称
说明
功能
数据类型
宽度
bjdh
班级代号
表示这个班级
int
kcbh
课程代号
表示该班级的该课程
int
ks_num
课时数目
表示该班级该课程的课时数目
int
z_num
课时周数
表示该班级该课程的上课周数目
int
6、班级课时数据(表6)
字段名称
说明
功能
数据类型
宽度
bjdh
班级代号
班级的代号
int
kcdh
课程代号
课程的代号
int
sjdh
时间代号
该班级上该课程的时间点
int
js_dh
教师代号
上课老师的代号
int
jsdh
教室代号
上该次课的教室
int
注:
星期的属性值围tinyint中从1~5分别代表值是周一到周五;节次的属性值围tinyint中从1~4分别代表值是1~2节,3~4节,5~6节,7~8节。
7、授课数据(表7)
字段名称
说明
功能
数据类型
宽度
jdh
教师代号
int
kcdh
课程代号
int
注:
一个老师可能教授多门课程的情况也存在。
8、教室使用状态数据分析(表8)
字段名称
说明
功能
数据类型
宽度
jsdh
教室的代号
int
jcdh
时间代号
哪个时间点教室在用状态
int
syqk
使用情况
该教室在时间段是否被使用
char
2
注:
标注教室使用情况,以便于进行排课时不至于冲突。
9、学期的时间分配数据(表9)
字段名称
说明
功能
数据类型
宽度
sjdh
时间代号
int
zc
时间周
tinyint
xq
时间星期
inyint
jc
节次
tinyint
注:
星期的属性值围tinyint中从1~5分别代表值是周一到周五;节次的属性值围tinyint中从1~4分别代表值是1~2节,3~4节,5~6节,7~8节。
以上各是需求分析后形成的数据的部分数据字典,基本描述了各种数据及其结构,没有对数据的数据存储进行较多的描述。
1.3基本数据流图
通过以上的分析和各类数据的形成,也将在以下画出该系统的基本简单数据流图,数据流图(DataFlowDiagram,DFD)为概念结构设计和形成初步基本E-R图做好准备。
下图为得到的基本数据流程图:
班级课程
排课处理
班级
教室
分析教室
课程
教室状态
教师授课
班级上课时段
数据流出
课程号
班级号
人数
人数
教室类别
可用教室
课程号
老师号
时间点
基本数据流程图(图1)
注:
在该数据流程图中简要将系统的数据流向标示,在排课处理中综合所有的相关数据,最后得到一个班级一门课程在一个时间点的上课地点和任课老师。
二、概念结构设计
将以上需求分析阶段得到的数据字典及数据流程图整合为对应得到实体联系图,为下一步逻辑结构设计中创建关系代数模型和建立相应得表做最后的分析准备。
2.1数据各实体及其属性
以下各图将系统所有实体的属性集合表示如下:
教室
教室号
教室类别
教室规模
代号
姓名
专业
性别
班级
班级名
班级人数
代号
教师
课程
课程号
课程名
上课类别
班级课
课程号
班级号
课时数
周数
授课
教师号
课程号
学期时间
代号
周次
星期
节次
班级课表
时间号
班级号
课程号
教室号
教师号
教室状态
教室号
时间号
是否空
以上将数据各实体分别将图表列出。
2.2基本E-R图的形成
实体联系部分情况:
1、一个班级可以是在一个学期学习没M门课程,一门课程也可以同时在我们学校的N个班级开课;
2、一个老师可以教M门课程的情况,同时一门课程有N个老师在教授课程;
3、一个班级有M个老师授课学习,一个老师也可能在N个班级中讲课;
4、一个班上课只能在1个教室,同时一个教室在一时刻只能一个班上课(大课及公选课没有考虑进去);
5、一个老师上课在1个教室,一个教室只能1个老师在上课;
6、一个时间点有M个班级在上课,一个班级只能只能在1个时间点上课。
基本E-R图:
老师
班级
课程
学习
讲课
教学
教室
占用
占用
讲课
M
N
M
N
M
N
1
1
1
1
1
1
系统基本E-R图
在形成E-R图的过程中,由于将各实体联系到一块,可能会产生命名冲突,结构冲突和属性冲突,在此将不具体介绍相关冲突的解决办法,只在后面的模型中自行分析并解决。
三、逻辑结构设计
逻辑结构设计是在概念结构设计好的基础上把形成的基本系统实体联系图转化为我们现在要使用的DBMS关系模型结构,在此将具体将E-R图的各实体和属性联系转化为一个个的关系模式,并对各关系模式分析各规要求。
3.1E-R图转化为关系模式
生成的关系表:
1、课程表(课程号,课程名,课程类别)
该表记录全校所有课程的相关信息,包括该课程的上课类别,也就是上课教室的类别,将课程号作为主码。
该关系中其它两个非主属性完全依赖于码值课程代号,也不存在传递依赖,同时满足于1NF,2NF,3NF三个规。
2、班级表(班级代号,班级名,班级人数)
表记录学校各班级的的简单信息,包括班级名称和班级人数,班级人数同时将会确定该班级上课的教室规模,班级代号为主码约束,班级名和班级人数完全依赖于该码,不存在传递依赖,该关系满足3式规要求。
3、教师表(教师代号,教师性别,教师)
教师表将学校所有老师的信息记录,教师代号为为主码,也满足三式的规要求。
4、教室表(教室代号,教室规模,教室类别)
将记录全校所有教室信息的表,其中实体完整性为教室代号为主码,教室规模为教室容纳人数,教室类别取值有int型数据4种,两个非主属性完全依赖于码且不传递依赖于主码。
5、时间表(时间代号,星期,节次,周次)
记录学校一个学期所有上课时间的表,将节假日和双休日可以不再表,包含周次,星期,节次三个时间属性,时间代号为主码约束,三个属性完全依赖于主码,也不传递依赖于主码,满足关系式要求。
6、班级选课表(班级代号,课程代号,课时数,周数)
班级选课表将记录一个班级一门课程的上课信息,包括课时数,和上课总周数,班级代号和课程代号为主码,同时也是班级表和课程表的外码,一个班的某门课程的上课课时和周数一定的,两个属性完全依赖于主码,同时这个关系也将是编程实现时进行排课所需要的表,将会生成视图和编写触发器对应外码的参照完整性。
7、班级派课表(班级代号,时间代号,课程号,教师代号,教室代号)
班级派课表中记录排课后的班级上课表,也是最终得到的班级课表信息,以班级代号和时间代号为主码约束,其他属性有该班级在该时刻上课的课程,上课的老师代号,以及上课的教室代号。
8、教室状态表(教室代号,时间代号,使用状态)
教室状态表保存了在排课过程中教室的使用情况,使用状态为1和0,分别表示教室在该时刻的使用状态,为编程实现不会教室在某个时刻不重复排教室。
教室代号和时间代号为主码约束,该关系同样满足三式规。
9、授课状态表(教师代号,课程代号)
授课状态表将记录老师的教课信息,一个老师可能上几门不同的课程,比如java老师可能也上C语言的课程,加入该表将会更准确记录老师的授课信息,以便排课系统更好的分配。
该表为全码约束,两个属性组合为主键。
3.2部分表、视图和触发器的创建
1、表的创建:
Createtablesubject//课程表创建
(
Kcdhintparmarykey,
Kcmchar(4)notnull,
Kclbchar(4)notnull,
Zxsintnotnull,
Zhxsintnotnullchilk(zhxsin(0,1,2,3))defult1,
)
Createtableteacher//教师表的建立
(
Js~dhintparmarykey,
Jszychar(8)notnull,
Jsxbchar
(2)notnullchilk(jsxbin(‘男,女’)),
Jsxmchar(8)notnull
)
2、班级查询视图建立
Createviewclasstime
As
Selectclass.bjxm,班级派课表.jsdh,,subject.kcm,teacher.jsxm,time.jc,zc,xq
Fromclass,time,teacher,班级派课表,subject
Whereclass.bjdh=班级派课表.bjdhand
teacher.js~dh=班级派课表.s~dhand
time.sjdh=班级排派表.sjdhand
subject.kcdh=班级派表.kcdh
3、教室课表视图建立:
Createviewteachertime
As
Selectjsxm,bjxm,kcm班级派课表.bidh,xq,zc,jc,班级派课表.bidh
Fromclass,room,teacher,time,班级排课表.,subject
Whereclass.bjdh=班级派课表.bjdhand
teacher.js~dh=班级派课表.s~dhand
time.sjdh=班级派课表.sjdhand
subject.kcdh=班级排课表.kcdh
5、部分触发器的建立:
Createtriggerinsert_STon班级派课表forinsert
As
Begin
declarebanjiintbanji_1int
selectbanji=count(*)from班级派课表,insertedwhereinserted.bjdh=班级派课表.bjdhandinserted.bjkc=班级派课表.bjkc
selectbanji_1=kssfrom班级课表,insertedwhereinserted.bjdh=班级派课表.bjdhandinserted.bjkc=班级派课表.bjkc
ifbanji_1begin
Print(‘该班级的该课程已经被排满了,不能再排’);
Rollbacktran
end
end
四、总结分析
该实训过程中综合了该学期以来对数据库设计和T/SQL的学习,通过了解相关设计案例,借助SQLServer2005开发工具,于同伴完成了改排课系统的初步简单设计。
各关系表和逻辑设计也讨论并且按照规要求完成,表之间可能存在部分数据冗余和部分数据冲突,将会在以后有机会深入探讨学习。
最后感一个学期以来中黄欣老师在该课程上的帮助和教授。