排课系统数据库设计.docx

上传人:b****5 文档编号:26400605 上传时间:2023-06-19 格式:DOCX 页数:15 大小:104.92KB
下载 相关 举报
排课系统数据库设计.docx_第1页
第1页 / 共15页
排课系统数据库设计.docx_第2页
第2页 / 共15页
排课系统数据库设计.docx_第3页
第3页 / 共15页
排课系统数据库设计.docx_第4页
第4页 / 共15页
排课系统数据库设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

排课系统数据库设计.docx

《排课系统数据库设计.docx》由会员分享,可在线阅读,更多相关《排课系统数据库设计.docx(15页珍藏版)》请在冰豆网上搜索。

排课系统数据库设计.docx

排课系统数据库设计

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

declare@banjiint@banji_1int

select@banji=count(*)from班级派课表,insertedwhereinserted、bjdh=班级派课表、bjdhandinserted、bjkc=班级派课表、bjkc

select@banji_1=kssfrom班级课表,insertedwhereinserted、bjdh=班级派课表、bjdhandinserted、bjkc=班级派课表、bjkc

if@banji_1<@banji

begin

Print(‘该班级的该课程已经被排满了,不能再排’);

Rollbacktran

end

end

四、总结分析

该实训过程中综合了该学期以来对数据库设计与T/SQL的学习,通过了解相关设计案例,借助SQLServer2005开发工具,于同伴完成了改排课系统的初步简单设计。

各关系表与逻辑设计也讨论并且按照规范要求完成,表之间可能存在部分数据冗余与部分数据冲突,将会在以后有机会深入探讨学习。

最后感谢一个学期以来中黄欣老师在该课程上的帮助与教授。

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

当前位置:首页 > 高中教育 > 高考

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

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