数据库课程设计教务管理系统sqlsever.docx
《数据库课程设计教务管理系统sqlsever.docx》由会员分享,可在线阅读,更多相关《数据库课程设计教务管理系统sqlsever.docx(35页珍藏版)》请在冰豆网上搜索。
数据库课程设计教务管理系统sqlsever
数据库课程设计教务管理系统(sql-sever2008)
河南城建学院
HenanUniversityofUrbanConstruction
《数据库原理》课程设计报告
课程名称:
《数据库原理》课程设计
设计题目:
《教务管理系统》
指导教师:
何宗耀
班级:
0844141
学号:
084414144
学生姓名:
同组人员:
成绩:
评语:
计算机科学与工程学院
2016年6月
2.2系统功能模块
1.2.1模块
模块一教师管理系统(主要完成教师的信息维护以及授课信息)
模块二学生管理系统(主要完成学生信息的维护以及上课的管理)
1.2.2模块功能
系表信息查询和更新模块将实现对系部信息的查询和更新(修改、插入、删除)操作,方便于对系部基本信息的管理
教师管理系统
(1)教师表实现了对教师信息的查询,更新(修改插入删除)操作
(2)授课表实现了老师教学任务信息的维护
学生管理系统
(1)班级表的查询和更新模块将完成班级基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
(2)学生表的查询和更新模块将完成学生基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
(3)课程表的查询和更新模块将完成课程基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
(4)选课表的查询和更新模块将完成对所选课程基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
(5)教室表的查询和更新模块将完成教室基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
(6)班主任在Student表中查询全部学生信息
(7)在Student,Cource,Elective表中,按学号查询学生成绩
(8)学生在Student表中查询本人信息
第3章数据库设计
3.1需求分析
3.1.1流程图
局部流程图:
总的流程图:
3.1.2数据字典
数据项:
系统涉及的数据项有29项
数据项列表
数据项编号
数据项名
别名
与其他数据项的关系
类型
DI-1
Xno
系号
char(10)
DI-2
Xname
系名称
char(10)
DI-3
Xdirector
系主任
char(10)
DI-4
Cno
班级号
char(20)
DI-5
Cname
班级名称
char(10)
DI-6
Cdirector
班主任
char(10)
DI-7
Sno
学号
char(20)
DI-8
Sname
学生姓名
varchar(30)
DI-9
Ssex
学生性别
char(4)
DI-10
Saddr
家庭住址
char(30)
DI-11
Sage
学生年龄
smallint
DI-12
Smajor
专业
char(20)
DI-13
Courceno
课程号
char(10)
DI-14
Courcename
课程名称
char(10)
DI-15
Credit
学分
smallint
DI-16
Courcedirector
授课教师
同Tname
char(10)
DI-17
Grade
成绩
char(10)
DI-18
Rno
教室号
char(10)
DI-19
Rname
教室名称
char(10)
DI-20
Raddr
教室地址
char(10)
DI-21
Stime
上课时间
同Teachtime
datetime
DI-22
Usetime
占用学时
char(10)
DI-23
Tno
教工号
char(10)
DI-24
Tname
教师姓名
同Courcedirector
char(10)
DI-25
Tsex
教师性别
char(10)
DI-26
Tpos
职称
char(10)
DI-27
Tage
教师年龄
smallint
DI-28
Tsal
工资
smallint
DI-29
Teachtime
授课时间
同Stime
datetime
数据结构
数据结构列表
数据结构编号
名称
描述
组成
DS-1
Department
系信息
Xno,Xname,Xdirector
DS-2
Class
班级信息
Cno,Cname,Xno,Cdirector
DS-3
Student
学生信息
Sno,Sname,Ssex,Saddr,Sage,Smajor,Cno
DS-4
Cource
课程信息
Courceno,Courcename,Credit,Courcedirector
DS-5
Elective
选课信息
Sno,Courceno,Grade
DS-6
Classroom
教室信息
Rno,Rname,Raddr
DS-7
Occupy
占用信息
Cno,Rno,Stime,Usetime
DS-8
Teacher
教师信息
Tno,Tname,Tsex,Tpos,Tage,Tsal
DS-9
Teaching
授课信息
Tno,Cno,Courceno,Teachtime
数据存储
数据存储结构列表
编号
存储名
流入数据流
流出数据流
组成
DS-1
系
系信息
系信息
系
DS-2
班级
班级信息
班级信息
班级
DS-3
学生
学生信息
学生信息
学生
DS-4
课程
课程信息
课程信息
课程
DS-5
选课
选课信息
选课信息
学生课程
DS-6
教室
教室信息
教室信息
教室
DS-7
占用
班级教室信息
班级教室信息
班级教室
DS-8
教师
教师信息
教师信息
教师
DS-9
授课
教师班级信息
教师班级信息
教师班级
处理过程
存储过程列表
处理过程名
输入数据流
输出数据流
处理
系信息
系领导
系信息
系号不能缺省
班级信息
班级
班级信息
班级号唯一
学生信息
学生
学生信息
学生号唯一
课程信息
课程
课程信息
课程号唯一
选课信息
学生课程
选课信息
学生及课程号与学生和课程信息相同
教室信息
教室
教室信息
教室号唯一
占用信息
教室班级
占用信息
教室号和班级号唯一
教师信息
教师
教师信息
教师号唯一
授课信息
教师课程
授课信息
教师号和课程号唯一
3.2概念结构设计
3.2.1E—R图
局部E-R图:
全局E-R图
采用自底直地向上的设计方法,首先定义局部的概念结构,然后将局部概念概念结构集成全局的概念结构。
在进行局部E-R图的合并时先消除属性,命名及结构冲突。
然后消除冗余生成全局E-R图。
上述E-R图各实体的属性如下所示:
院系:
Deparement(Xno,Xname,Xdirector)
学生:
Student(Sno,Sname,Ssex,Saddr,Sage,Smajor,Cno)
教师:
Teacher(Tno,Tname,Tsex,Tpos,Tage,Tsal)
课程:
Course(Courseno,Coursename,Credit,Coursedirector)
教室:
Classroom(Rno,Rname,Raddr)
班级:
Class(Cno,Cname,Xno,Cdirector)
各E-R图中联系的属性如下所示:
选课信息:
Elective(Sno,Courseno,Grade)
占用教室信息:
Occupy(Cno,Rno,Stime,Uestime)
授课信息:
Teaching(Tno,Cno,Courseno,Teachtime)
3.3逻辑结构设计
3.3.1E-R图向关系模式转换原则
1.一个实体转换为一个表,实体的属性转换为表的列,实体的码转换为表的主键。
2.实体间的联系根据联系的类型转换如下:
1:
1的联系两个实体分别转换为表后,只要在一个表中增加外键,一般在记录较少的表中增加属性,作为外键,该属性是另一个表的主键。
1:
n的联系在n端的实体对应的表中增加属性,该属性是1端实体对应的主键。
m:
n的联系通过引进一个新表来表达两个实体多对多的联系,新表的主键是由联系两端实体的主键组合而成,同时增加相关的联系属性。
3.3.2范式的判定(3NF)
范式的判定
院系:
Deparement(Xno,Xname,Xdirector)3NF
学生:
Student(Sno,Sname,Ssex,Saddr,Sage,Smajor,Cno)3NF
教师:
Teacher(Tno,Tname,Tsex,Tpos,Tage,Tsal)3NF
课程:
Cource(Courceno,Courcename,Credit,Courcedirector)3NF
教室:
Classroom(Rno,Rname,Raddr)3NF
班级:
Class(Cno,Cname,Xno,Cdirector)3NF
选课信息:
Elective(Sno,Courceno,Grade)3NF
占用教室信息:
Occupy(Cno,Rno,Stime,Uestime)3NF
授课信息:
Teaching(Tno,Cno,Courceno,Teachtime)3NF
以上各表均满足第一范式属性是不可分割的基本数据象,第二范式关系属性集中的非主属性完全依赖于候选码,第三范式每个非主属性既不部分函数依赖于码,也不传递依赖于码。
具体的基本E-R图向关系模型的转化如下:
院系:
Department(Xno,Xname,Xdirector)
学生:
Student(Sno,Sname,Ssex,Saddr,Sage,Smajor,Cno)
教师:
Teacher(Tno,Tname,Tsex,Tpos,Tage,Tsal)
课程:
Course(Courceno,Coursename,Credit,Coursedirector)
教室:
Classroom(Rno,Rname,Raddr)
班级:
Class(Cno,Cname,Xno,Cdirector)
选课信息:
Elective(Sno,Courseno,Grade)
占用教室信息:
Occupy(Cno,Rno,Stime,Uestime)
授课信息:
Teaching(Tno,Cno,Courseno,Teachtime)
(注:
标有直线下划线的为主属性,标有波浪线下划线的为外键属性,主属性与外键属性一起构成主码)
模型优化
确定数据依赖。
分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。
根据需求分析可知:
1.系表的数据依赖:
{系号->系名,系号->系主任}
2.班级表的数据依赖:
{班号->班名,班号->班主任,班号->系号}
3.学生表的数据依赖:
{学生号->姓名,学生号->性别,学生号->省份,学生号->年龄,学生号->班级号,学生号->专业}
4.课程表的数据依赖:
{课程号->课程名,课程号->学分,课程号->任课教师号}
5.教师表的数据依赖:
{教师号->姓名,教师号->职称,教师号
->性别,教师号->年龄,教师号->工资}
6.教室表的数据依赖:
{教室号->教室名,教室号->教室位置}
7.选课表的数据依赖:
{(学生号,课程号)->成绩}
8.占用表的数据依赖:
{(班级号,教室号,上课时间)->占用学时}
9.授课表的数据依赖:
教授表的数据依赖:
{(教师,班级号,课程号)->授课时间}
3.3.3子模式的设计(视图)
1.院系信息表
2.班级信息表
3.学生信息表
4.课程信息表
5.选课信息表
6.教室信息表
7.占用信息表
8.教师信息表
9.授课信息表
3.4物理结构设计
3.4.1存储结构与存取方法
存储结构的确定
确定数据库的存储结构,主要是数据库中数据的存放位置,合理设置系统参数。
数据库中的数据主要是指表、索引、聚促、日志、备份等数据。
存储结构选择的主要原则是:
数据存取时间上的高效性、存储空间的利用率、存储数据的安全性。
存放位置
在数据存放位置之前,要将数据中易变部分和稳定部分适当分离并分开存放;要将数据库管理系统文件和数据库文件分开。
如果系统采用多个磁盘和磁盘阵列,将表和索引存放在不同的磁盘上,查询时由于两个驱动器并行工作,可以提高I/O读写速度。
为了系统的安全性,一般将日志文件和重要的系统文件存放在多个磁盘上,互为备份。
另外,数据库文件和日志文件的备份,由于数据量大,并且只在数据库恢复时使用,所以一般存储在磁带上。
系统配置
DBMS产品一般都提供大量的配置参数,供数据库设计人员和DBA进行数据库的物理结构设计和优化,如用户数,缓冲区,内存配置,物理块的大小等。
一般建立数据库时,系统都提供了默认参数,但是默认参数不一定适用每一个应用环境,要做适当的调整。
此外,在物理结构设计的参数,只是初步的,要在系统运行阶段根据实际情况进一步调整和优化。
存取方法的选择
索引是数据库表的一个附加表,存储了建立索引猎德值和对应的地址。
查询数据时,先在索引中根据查询的条件值找到相关地址,然后在表中存取对应的记录,所以能加快查询速度。
但索引本身占用存储空间,索引是系统自维护的。
建立索引的一般原则是:
1.如果某属性或属性组经常出现在查询中,则考虑为该属性或属性组建立索引;
2.如果某个属性经常作为最大值和最小值等聚集函数的参数,则考虑建立索引;
3.如果某属性和属性组经常出现在连接操作的连接条件中,则考虑建立索引;
3.4.2数据的易变与稳定部分
1.由于基本表Teacher,Student的主码Tno,Sname经常在查询条件和连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;
2.由于基本表Elective的属性Sno,Grade经常在查询条件中出现,在两个属性上建立唯一索引;
3.4.3索引的建立
createuniqueindexsnogradeonElective(Snoasc,Gradedesc);
createuniqueindexteadnoonTeacher(Tno);
createuniqueindexstusnameonStudent(Sname);
3.5数据库、表建立的代码
createdatabase教学信息管理系统
onprimary
(name='教学信息管理系统',
filename='E:
\教学信息管理系统\教学信息管理系统.mdf',
size=10MB,
maxsize=20mb,
filegrowth=15%)
logon
(name='教学信息管理系统_log',
filename='E:
\教学信息管理系统\教学信息管理系统_log.ldf',
size=5mb,
maxsize=10mb,
filegrowth=3MB)
go
1.教师表基本信息的建立
createtableTeacher(
Tnochar(10)primarykey,--教工号
Tnamechar(10)notnull,--姓名
Tsexchar(10)notnullcheck(Tsexin('男','女')),--性别
Tposchar(10)notnullcheck(Tposin('教师','主任','辅导员')),--职称
Tagesmallintnotnull,--年龄
Tsalsmallintnotnull,--工资
)
2.院系基本信息表的建立:
CreatetableDepartment(
Xnochar(10)primarykeynotnull,--系号
Xnamechar(10)notnull,--系名称
Xdirectorchar(10),--系主任
foreignkey(Xdirector)referencesTeacher(Tno)ondeletecascade
)
3.班级基本信息表的建立:
CreatetableClass(
Cnochar(20)primarykey,--班级号
Cnamechar(10)notnull,--班级名称
Xnochar(10),--所属系
Cdirectorchar(10),--班主任
foreignkey(Xno)referencesDepartment(Xno),
foreignkey(Cdirector)referencesTeacher(Tno)ondeletecascade
)
4.学生基本信息表的建立:
CreatetableStudent(
Snochar(20)primarykey,--学号
Snamevarchar(30)notnull,--姓名
Ssexchar(4)notnullcheck(Ssexin('男','女')),--性别
Saddrchar(30)notnull,--家庭住址
Sagesmallintnotnull,--年龄
Smajorchar(20)notnull,--专业
Cnochar(20)--所属班级
foreignkey(Cno)referencesClass(Cno)
)
5.课程基本信息表的建立:
CreatetableCource(
Courcenochar(10)primarykey,--课程号
Courcenamechar(10)notnull,--课程名称
Creditsmallintnotnull,--学分
Courcedirectorchar(10),--授课教师
foreignkey(Courcedirector)referencesTeacher(Tno)ondeletecascade,
)
6.学生所选课程基本信息表的建立:
CreatetableElective(
Snochar(20),--学号
Courcenochar(10),--课程号
Gradefloat(10)notnull,--成绩
primarykey(Sno,Courceno),
foreignkey(Sno)referencesStudent(Sno)ondeletecascade,
foreignkey(Courceno)referencesCource(Courceno),
)
7.教室基本信息表的建立:
createtableClassroom(
Rnochar(10)primarykey,--教室号
Rnamechar(10)notnull,--教室名称
Raddrchar(10)notnull,--教室地址
)
8.占用教室基本信息表的建立:
createtableOccupy(
Cnochar(20),--班级号
Rnochar(10),--教室号
Stimedatetime,--上课时间
Usetimechar(10),--占用学时
primarykey(Cno,Rno,Stime),
foreignkey(Rno)referencesClassroom(Rno),
foreignkey(Cno)referencesClass(Cno),
)
9.授课基本信息表的建立:
createtableTeaching(
Tnochar(10),--教工号
Cnochar(20),--班级号
Courcenochar(10),--课程号
Teachtimedatetimenotnull,--授课时间
primarykey(Tno,Cno,Courceno),
foreignkey(Tno)referencesTeacher(Tno)ondeletecascade,
foreignkey(Cno)referencesClass(Cno),
foreignkey(Courceno)referencesCource(Courceno),
)
insertintoTeachervalues('023134','陈建华','男','辅导员','25','3600')
insertintoTeachervalues('052325','陈华','男','主任','27','3600')
insertintoTeachervalues('033226','张红','女','教师','29','4000')
insertintoTeachervalues('074354','王伟','男','主任','31','4300')
insertintoTeachervalues('051242','侯芳','女','主任','43','3800')
insertintoTeachervalues('022124','王建','男','教师','32','4500')
insertintoTeachervalues('087687','王志','男','主任','34','3900')
insertintoTeachervalues('011343','张国龙','男','教师','34','4500')
insertintoTeachervalues('068787','李薇','女','主任','35','3700')
insertintoTeachervalues('068962','史俊','男','主任','27','4200')
insertintoTeachervalues('042315','李芬','女','辅导员','26','3600')
insertintoTeachervalues('027778','高倩','女','主任','29','3300')
insertintoTeachervalues('045477','陈勇','男','主任','30','4300')
insertintoTeachervalues('043276','杨飞','男','