数据库课程设计
目录
学院管理系统的数据库设计 2
- 课程设计目的 2
- 开发环境 2
- 系统任务概述 3
- 系统需求分析 3
4.1分析系统的参与者 3
4.2系统功能需求 4
4.3系统数据及数据处理需求 5
4.4数据字典描述 6
4.4系统性能需求 7 - 概念结构设计 7
5.1分析构成系统的实体 7
5.2系统局部E-R图 9
5.3合成全局E-R图 10 - 逻辑结构设计 11
6.1概念模型转换为关系模型 11
6.2关系模式优化 11
6.3设计用户子模式(视图) 12 - 物理结构设计 12
7.1表结构设计 13
7.2存储结构设计 14
7.3索引的设计 15 - 数据库实施与维护 16
8.1创建数据库 16
8.2创建表 16
8.3视图实现 18
8.4数据完整性约束 18
8.5触发器 19
8.6查询过程 21 - 总结 24
- 参考文献 25
学院管理系统的数据库设计
1.课程设计目的
通过课程设计,使学生掌握数据库系统的基本概念、原理和技术,培养学生完整、系统的数据库设计能力,锻炼学生分析问题、解决问题的能力以及团队合作的意识。将理论和实践相结合完成一个小型数据库系统的设计,把理论课和实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。并能在实际工作中加以灵活运用。
作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点。学院管理系统是一个通用性较好的人事管理系统,具有运行速度快、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低、安全性高、稳定性好的优点。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规性管理,与世界接轨的重要条件。本系统具备完善的学院管理功能,查询功能等功能。通过使用学院管理系统,使学生管理系统化、规范化、自动化、从而达到提高学院管理效率的目的。系统开发的总体任务是使办公人员可以轻松快捷地完成教学管理的任务。
2.开发环境
(1)硬件环境:服务器、客户机连成局域网结构;
(2)软件环境:
①数据库管理系统MySQL
②辅助设计工具word画图、亿图图示
③集成开发环境IntelliJ IDEA或Eclipse
3.系统任务概述
该项目开发的软件为学院管理系统软件,是鉴于目前学院学生、院系人数和各种信息剧增前提下,学校对信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位的信息的管理。目前社会上信息管理系统发展飞快,各个事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学校管理系统也是有了很大的发展,商业化的信息管理软件也不少。但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。
4.系统需求分析
一个功能齐全、简单易用的信息管理系统不但能有效的减轻学校各类工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学院管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
使用计算机对学院的各类信息进行管理,具有手工管理所无法比拟的优点,例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学院信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,我通过自己的知识和大量书籍的翻阅、网站的查询,和同学一起合作开发了一个学院管理系统。
4.1分析系统的参与者
学院的信息需要一个人进行管理,因此本系统的参与者是管理员、学生、专业、班级,可以对管理员信息、用户信息、学生信息、班级信息、专业信息进行数据管理,对管理员、用户、学生、专业、班级状态进行管理,对学生的班级和专业进行管理。
学生可通过该系统查询相关信息,提出相关相关事项的申请如修改密码等。
班级负责设置各个学生所在班级信息。
专业负责各个学生所选专业信息。
管理员负责设置各参与用户使用系统的权限和学生班级信息和专业信息等的维护,备份系统数据库,恢复系统数据库,系统安全维护。
4.2系统功能需求
学院管理系统中,根据管理员、用户、学生的活动步骤,创建活动图如下图4-1示。
图4-1系统活动图
学生进入学院管理系统后,在用户注册后成功登陆后,可以注册、维护自己的个人账户信息,如图4-2所示。
图4-2学生用例图
本系统的功能分为5个板块,分别是学生管理,班级管理,专业管理,账号管理。如图4-3所示。
图4-3 系统功能模块图
4.3系统数据及数据处理需求
该系统主要包括三个模块,学生系统模块、班级系统模块、专业系统模块。学生系统模块主要是入学后对信息的查看,班级系统模块、专业系统模块主要是对信息的维护。根据上述功能,设计出数据流图,如图4-4所示。
图4-4数据流图
4.4数据字典描述
数据从程序内部分离出来,形成独立的外部数据文件。静态数据文件与动态数据文件相互独 立,依靠特定程序分别进行参照或存取。 静态数据由外部数据文件存放方式转为数据库存放方式,将以前程序中静态数据对动态数据加工的某些控制关系抽象为静态表与动态表之间的关系。
(1)主要数据字典
更新信息=用户信息/学生信息/班级信息/专业信息/管理员信息
用户信息=账号+密码+登录+重置+注册新用户
学生信息=姓名+班级+专业+编号+性别+年龄+电话
管理员信息=管理员账号+姓名+权限+密码
专业信息=专业名称+专业描述+专业编号
班级信息=班级名称+班级编号+班级描述+专业选择+所属专业
(2)数据存储
用户信息文件:存放用户信息
学生信息文件:存放学生信息
管理员信息文件:存放管理员信息文件
专业信息文件:存放专业信息文件
班级信息文件:存放班级信息文件
(3)加工
用户信息查询:对用户的基本信息进行查询
学生信息查询:对学生的基本信息进行查询
管理员信息查询:对管理员的基本信息进行查询
专业信息查询:对专业的基本信息查询
班级信息查询:对班级的基本信息查询
更新信息:更新用户或学生基本信息
职称:根据权限将管理员分为不同管理层人员,不同的权限对应不同的管理范围,互不干扰。
4.4系统性能需求
制定系统必须满足容量约束。容量约束:可以根据学生注册的数量多少来采用大、中、小型的数据库。
该系统在使用的过程中,不会出现各种泄露的问题,确保时间可靠性,在使用时不会出现各种不应该出现的系统的错误,出现错误不会导致系统死机。
5.概念结构设计
5.1分析构成系统的实体
由于管理员需要对学生信息进行信息管理;管理员对学生进行搜索;管理员对学生的班级和专业信息栏管理;学生管理其对应的班级和专业;学生查询班级和专业。因此本系统的实体有学生、班级、管理员、专业,一共需要4个实体。
图5-1学生实体及属性
图5-2管理员实体及属性
图5-3班级实体及属性 图5-4专业实体及属性
5.2系统局部E-R图
从数据流图和数据字典分析得出实体及其属性后,可进一步分析各实体之间的关系。
“学生”实体与“班级”实体存在“组成”的联系,一个学生只属于一个班级,每个班级可以被多个学生组成,所以他们之间存在一对多联系(1:n),如图5-1所示。
“学生”实体与“专业”实体存在“学习”的联系,一个学生只可学习一个专业,每个专业可以被多个学生学习,所以他们之间存在一对多联系(1:n),如图5-2所示。
“班级”实体与“专业”实体存在“属于”的联系,一个班级只属于一个专业,每个专业包含多个班级,所以他们之间存在一对多联系(1:n),如图5-3所示。
5.3合成全局E-R图
系统的局部E-R图只能反映局部应用实体之间的联系,不能从整体上反映实体之间的相互关系。各局部E-R图之间可能存在一些冲突和数据冗余,为了减少这些问题,必须根据实体联系在实际应用中的语义进行综合和调整,根据对上面局部E-R图的分析,得到系统的全局E-R图。如图5-4所示。
6.逻辑结构设计
6.1概念模型转换为关系模型
概念结构设计阶段设计的数据模型是独立于任何商业化的DBMS的信息结构,逻辑设计阶段的主要任务是把E-R图转化为选用的DBMS产品支持的数据模型,将概念设计的E-R模型转化为关系数据模型。
首先从“学生”实体和“班级”实体以及它们之间的联系来考虑。
(1)“学生”与“班级”实体之间的关系是多对多的关系,所以“学生”与“班级”之间的关系分别设计如下关系模式:
学生(编号,姓名,年龄,性别,电话,班级,专业)
班级(班级编号,班级名称,所属专业,班级描述)
(2)“学生”与“专业”实体之间的关系是多对一的关系,所以“学生”与“专业”之间的关系分别设计如下关系模式:
学生(编号,姓名,年龄,性别,电话,班级,专业)
专业(专业编号,专业名称,专业描述)
(3)“专业”与“班级”实体之间的关系是一对多的关系,所以“专业”与“班级”之间的关系分别设计如下关系模式:
专业(专业编号,专业名称,专业描述)
班级(班级编号,班级名称,所属专业,班级描述)
6.2关系模式优化
在进行关系模式设计之后,还要以规范化理论为指导,以实际应用的需要为参考,对关系模式进行优化,以达到消除异常和提高系统效率的目的。
一般情况下,关系模式只需要满足3NF即可,有的还可以满足BCNF。在实际应用设计中,关系模式的规范化程度并不是越高越好,因此,从最低范式向高范式转化时必须将关系模式分解成多个关系模式。为了提高系统的处理性能,要对相关程度比较高的表进行合并,或者在表中添加相关程度比较高的属性,这样选择较低的1NF或2NF比较合适。本系统的“用户”“班级”“管理员”“专业”实体关系模式比较适合实际应用,所以不需要做结构上的优化。
6.3设计用户子模式(视图)
本次学院管理系统创建了三个视图,视图可以提高系统的安全性,可以对不同的用户/班级/专业设定不同的视图。
(1)视图projectname
视图projectname是为了让用户查看自己的信息,个人情况。视图中的字段包括用户名,密码。这些都是根据用户信息中的各个字段名进行创建。
(2)视图classname
视图classname是为了让班级可以注册查看自己班级注册的信息。视图中的字段包括班级名称,班级信息,专业选择。这些是根据班级注册中的各个字段名进行创建。
7.物理结构设计
物理数据库设计的任务是将逻辑设计映射到存储介质上,利用可用的硬件和软件功能,尽可能快的对数据进行物理访问和维护。在物理结构中,数据的基本存取单位是存储记录,有了逻辑结构以后就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应,存储记录就包括记录的组成,数据项的类型和长度等。数据存储是系统的核心组成部分,本系统的主要数据是采用文件的存储方式与文件组的形式,将文件组织在一起,便于数据库数据管理。
在得到数据库的各个关系模式之后,需要根据需求分析阶段数据字典的数据项描述给出各数据库表的结构,考虑到系统的兼容性以及编写程序的方便性,可以将关系模式的属性对应为表字段的英文名。同时考虑到数据依赖关系和数据完整性,需要指出,表的主键和外键以及字段的值与约束和数据类型。
7.1表结构设计
(1)班级信息表(class)
class表是记录班级的信息的表,里面设置了字段的名称、类型还有约束信息等等,主键是班级编号。如表7-1所示。
字段名称 字段类型 是否为空 约束 字段说明
t_id int(11) 否 主键 班级编号
t_className Varchar(20) 是 班级名称
t_classDesc Varchar(1000) 是 班级描述
t_projectid int(11) 是 所属专业
表7-1 班级信息表
(2)管理员信息表(user)
user表是记录管理员的信息的表,里面设置了字段的名称、类型还有约束信息等等,主键是管理员编号。如表7-2所示。
表7-2 用户信息表
字段名称 字段类型 是否为空 约束 字段说明
t_id int(11) 否 主键 管理员编号
t_ userName Varchar(20) 是 管理员姓名
t_ password Varchar(20) 是 密码
(3)学生信息表(student)
student表是记录学生的信息的表,里面设置了字段的名称、类型还有约束信息等等,主键是学生编号。如表7-3所示。
字段名称 字段类型 是否为空 约束 字段说明
t_id int(11) 否 主键 学生编号
t_name Varchar(20) 是 学生姓名
t_sex Varchar(20) 是 学生性别
t_age int(11) 是 学生年龄
t_ telephone Varchar(20) 是 学生电话
t_ stdesc Varchar(2000) 是 学生专业
t_ classid int(11) 是 学生班级
表7-3 学生信息表
(4)专业信息表(project)
project表是记录专业的信息的表,里面设置了字段的名称、类型还有约束信息等等,主键是专业编号。如表7-4所示。
表7-4 专业信息表
字段名称 字段类型 是否为空 约束 字段说明
t_id int(11) 否 主键 专业编号
t_ projectName Varchar(20) 是 专业名称
t_ projectDesc Varchar(1000) 是 专业描述
7.2存储结构设计
存储过程是一条或多条SQL语句的集合,利用这些SQL语句完成一个或者多个逻辑功能。
(1)创建存储过程stu_grade,执行时通过输入学号可以查询该学生的各科成绩。
DELIMITER @@
CREATE PROCEDURE stu_grade()
BEGIN
SELECT sname,coursename,成绩 FROM studinfor s,courseinfor c,grade g
WHERE s.scode=g.学号 AND g.课程编号=c.ccode AND s.scode=‘202101’;
END @@
调用结果如图所示。
(2)创建存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
DELIMITER @@
CREATE PROCEDURE stu_g_r(IN scode VARCHAR(8),OUT num INT)
BEGIN
SELECT COUNT(*) INTO num FROM grade WHERE 课程编号=scode;
END @@
调用结果如图7-2所示
(3)创建存储过程t_stu
delimiter @@
CREATE PROCEDURE t_student()
BEGIN
SELECT telephone FROM t_student
WHERE id=‘11’;
END @@
7.3索引的设计
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
主键索引不能为空,一个表里面的主键只能有一个,用户表里面设置t_id为主键索引,班级表是t_id、学生表是t_id、专业表是t_id。
8.数据库实施与维护
8.1创建数据库
CREATE DATABASE xueyuan
8.2创建表
(1)表t_class
(2)表t_project
(3)表t_student
(4)表t_user
8.3视图实现
(1)视图projectName
(2)视图className
(3)视图sex
8.4数据约束
数据库的完整性是指数据的正确性和相容性。利用完整性约束,DBMS可帮助用户组织非法数据的输入。
学生信息表中创建主键约束。
专业表中设置主键约束。
8.5触发器
触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。在学生信息管理系统中,创建触发器test_trig,实现在studinfor表中每插入一条学生记录自动在test中追加一条插入成功时的日期时间。SYSDATE()函数用来获取当前的日期和时间。
首先创建测试表test,它包含一个字段date_time,字段类型为VARCHAR(50)。
如图所示。
创建触发器test_trig。如图所示。
为studinfor表插入一条记录引发触发器,查看test表中的内容。如图所示。
在courseinfor表创建触发器del_trig,当courseinfor表中删除一门课程时,级联删除grade表中该课程的记录。如图所示。
8.6查询过程
(1)在班级姓名当中查询id=11的所有用户。
(2)查询专业当中专业名称是“软件工程”的专业。
(3)查询t_student表当中姓名为小绿的性别。
(4)查询t_student表中id为19的学生姓名。
(5)查询t_project表中id=140的专业描述。
(6)查询t_student表中classid=7的电话。
(7)查询t_project表中专业名为艺术的id。
(8)查询t_class表中id=7的班级。
(9)查询t_class表中id=14的班级信息。
(10)查询t_class表中id=12的专业编号。
9.总结
数据库课程设计主要目的是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计,可以巩固对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高综合运用所学知识的能力。
本次课程设计,从各种文档的阅读到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。亲身体验了一回系统的设计开发过程,首先要思路清晰,做好仔细的用户调查,然后知道整个业务的流程。
数据库设计是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。上机实习一方面能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的;另一方面,上机实习是对学生软件设计的综合能力的训练。
本系统具备完善的学院管理功能,查询功能等功能。通过使用学院管理系统,使学生管理系统化、规范化、自动化、从而达到提高学院管理效率的目的。系统开发的总体任务是使办公人员可以轻松快捷地完成教学管理的任务。
10.参考文献
[1]王珊,萨师煊.《数据库系统概论》(第5版)[M].高等教育出版社,2014.9
[2]王珊.《数据库系统概论》(第5版)学习指导与习题解析[M].高等教育出版社,2015.7
[3]张红娟,金洁洁,匡芳君.《数据库课程设计》[M]西安电子科技大学出版社,2019
[4]李月军,付良廷《数据库原理及应用》(MySQL版)[M].清华大学出版社,2019
[5]李龙澍,郑诚.《软件工程课程设计》[M].机械工业出版社,2016