家教信息管理系统数据库课程设计知识分享.docx
《家教信息管理系统数据库课程设计知识分享.docx》由会员分享,可在线阅读,更多相关《家教信息管理系统数据库课程设计知识分享.docx(16页珍藏版)》请在冰豆网上搜索。
家教信息管理系统数据库课程设计知识分享
1.绪论
随着家教行业竞争的加剧、国内教育制度的不断深化改革,各类家教机构将更加注重学生的素质教育,不再单一为提高孩子学习成绩而努力,所以课外选择适合学员自己的家教是至关重要的,家教信息系统是管理教员主要及其详细的信息系统,利用计算机的数据库系统管理家教信息,达到管理功能完备,操作方便,有效快捷管理家教的信息,同时能够使用户和学员快速并详细的了解家教信息。
2.总体设计
2.1.数据流程分析图
数据流程图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。
数据流程图的特点:
具有抽象性和概括性。
抽象性表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理和存储;概括性表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。
结构化分析方法绘制数据流程图的基本思想:
自顶向下,由外向里,逐步分解。
家教信息系统顶层的功能:
教员利用家教信息系统录入自己的基本信息;管理员利用家教信息系统查看教员基本信息,教授科目信及评价信息,如图2-1所示。
图2-1顶层数据流图
2.2.系统功能模块设计
图2-2家教信息系统模块图
2.3.安全性设计
数据库的安全性就是指数据库中数据的保护措施,一般包括的登陆的身份验证管理、数据库的使用权限管理和数据库中对象的使用权限管理三种安全性保护措施。
家教信息系统是采用管理员鉴定的方法实现数据库的安全,此安全管理措施在数据库中实现。
登录数据库时,系统让管理员表示自己身份,不同管理员权限不同,系统进行鉴别此管理员是否为合法用户。
若是,系统进一步对用户口令进行核实。
只有完全符合的用户才能对系统内容进行相关更改、查询操作。
3.数据库设计
3.1.需求分析
3.1.1.任务概述
随着科技的发展和信息技术的日益普及,很多家长抱着望子成龙的心态不遗余力的为孩子找合适的家教,所以要设计一个家教信息系统,使用户利用网络的方便和快捷来具体了解家教的详细信息并快速找到适合学员的教员,而不用在跑去“家教服务中心”去了解,充分提高了快速了解教员信息的效率,减少了劳力及时间的浪费,对管理员来说,对家教信息的添加,修改,查询,更新和删除是必不可少的,所以开发设计一个全面的家教信息系统是必不可少的。
3.1.2.系统功能需求
家教信息系统是一种为管理家教的基本详细信息而设计的系统,一是使用户能够快速详细的,有针对性的去了解家教的基本信息,教授信息,所授科目信息,以及以往用户对家教的评价信息,二是对家教信息的管理实现现代化,从而方便了对家教信息的查询,更新与删除等,总体提高了管理的效率。
3.2.概念结构设计
3.2.1.数据需求
通过对家教信息系统的分析,得出如下数据特征:
(1)在家教信息系统中,每个教员由教员编号唯一标识,每科科目由科目编号唯一标识,每个学员由学员编号唯一标识。
(2)每个学员可以学习多门科目,每个教员可以教授多门科目,同时,一门课也可以由多位教员讲授,可供多为学员学习学习。
(3)每个学员可以评价多位教员,每个教员可以被多位学员评价。
(4)教员表和科目表为多对多的关系,可以通过设置教授表,确定教员和教授科目之间的明确关系。
(5)学员表和科目表为多对多的关系,可以通过设置学习表,确定学员和选择科目之间的明确关系。
(7)学员表和教员表为多对多的关系,可以通过设置评价表,确定学员和教员之间的明确关系。
3.2.2.E-R图设计
家教信息系统根据上面的设计规划出的实体有:
教员实体、科目实体、学员实体。
E-R图3-1如下。
图3-1家教信息系统E-R图
3.3.逻辑结构设计
数据库逻辑结构设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程。
3.3.1.关系模型
由E-R图转换成关系模式。
首先,将4个实体转换成关系模式的结果如下:
教员(教员编号,教员姓名,性别,电话,地址,文凭,任职类型)
科目(科目编号,科目名称,科目年级,课时单价)
学员(学员编号,学员姓名,性别,地址,电话,学习程度)
其次,将3个多对多类型的联系转换为关系模式,如下:
教授表(教员编号,科目编号,授课时间)
学习表(学员编号,科目编号,学习成绩,开始时间)
评价表(学员编号,教员编号,评价时间,授课质量,授课态度)
【注:
带下划线的属性为关系的主属性(即关键字)。
对于上述后3个表中都引用了外键,引用的外键“教员编号”都参照“教员表”的主键“教员编号”;引用的外键“科目编号”都参照“科目表”的主键“教员编号”;引用的外键“学员编号”都参照“学员表”的主键“学员编号”。
】
3.3.2.数据库完整性设计
(1)规范化设计
1.教员表:
教员编号→教员姓名,教员编号→性别,教员编号→电话,教员编号→地址,教员编号→文凭,教员编号→任职类型。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
2.科目表:
科目编号→科目名称,科目编号→科目年级,科目编号→课时单价。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
3.学员表:
学员编号→学员姓名,学员编号→性别,学员编号→地址,学员编号→电话,学员编号→学习程度。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
4.教授表:
(教员编号,科目编号)→授课时间。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
5.学习表:
(学员编号,科目编号)→学习成绩,(学员编号,科目编号)→开始时间。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
6.评教表:
(学员编号,教员编号)→评价时间,(学员编号,教员编号)→授课态度,(学员编号,教员编号)→授课质量。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
(2)约束设计
1.在教员、学员表中建立一个检查约束,即“性别”属性不是‘男’就是‘女’,check(sex='男'orsex='女')。
2.在学习表中建立一个检查约束,即“成绩”属性在0到100之间,check(score>=0andscore<=100)。
3.在评教表中,授课质量和授课态度属性设置检查约束,范围在0到100星之间,check(属性字段>=0and属性字段<=100)。
(3)视图设计
建立视图kemuxinxi_view,可以查看科目编号、科目名和科目年级的视图。
(4)索引设计
1.在jiaoyuan表中的jiaoyuanid列上创建名为jiaoyuanid_index的聚集索引。
2.在xueyuan表中的xueyuanid列上创建名为xueyuanindex的非聚集索引。
(5)存储过程设计
针对教员信息表jiaoyuan,创建一个名称为jiaoyuan_proc1的存储过程,该存储过程的功能是从数据表jiaoyuan中查询所有女教师的信息,并执行。
(6)触发器设计
建立一个update触发器(T2):
在数据库jiajiaoxinxi的worker表中的教员编号是唯一且不可改变的,创建触发器T2实现更新中编号的不可改变性。
3.4.物理结构设计
3.4.1.设计表
按照上述关系数据模型,系统所涉及的部分数据表如下表所示:
表1教员信息表
字段名
含义说明
数据类型
是否为空
约束设计
Jiaoyuanid
教员编号
Char(6)
否
主键
Xingming
教员姓名
Char(8)
否
Xingbie
性别
Char
(2)
否
“男”或“女”
Dianhua
电话
Int
否
Dizhi
地址
Char(20)
Wenping
文凭
Char(4)
rzlx
任职类型
Char(4)
表2科目信息表
字段名
含义说明
数据类型
是否为空
约束设计
Kemuid
科目编号
Char(6)
否
主键
Mingcheng
科目名称
Char(10)
否
Nianji
科目年级
Char(6)
否
Danjia
课时单价
Int
表3学员信息表
字段名
含义说明
数据类型
是否为空
约束设计
Xueyuanid
学员编号
Char(6)
否
主键
Xingming
学员姓名
Char(8)
否
Xingbie
性别
Char
(2)
否
“男”或“女”
Dizhi
地址
Char(20)
Dianhua
电话
Int
Xxcd
学习程度
Char(4)
表4教授表
字段名
含义说明
数据类型
是否为空
约束设计
Jiaoyuanid
教员编号
Char(6)
否
主键、外键
Kemuid
科目编号
Char(6)
否
主键、外键
Sksj
授课时间
Datetime
否
表5学习表
字段名
含义说明
数据类型
是否为空
约束设计
Xueyuanid
学员编号
Char(6)
否
主键、外键
Kemuid
科目编号
Char(6)
否
主键、外键
Xxcj
学习成绩
Int
否
0到100
Kssj
开始时间
Datetime
表6评价表
字段名
含义说明
数据类型
是否为空
约束设计
Xueyuanid
学员编号
Char(6)
否
主键、外键
Jiaoyuanid
教员编号
Char(6)
否
主键、外键
Pjsj
评价时间
Datetime
Skzl
授课质量
Int
否
0到100
Sktd
授课态度
Int
0到100
3.4.2.数据库与表的创建
1.创建数据库jiajiaoxinxi,如图3-2所示。
图3-2数据库jiajiaoxinxi
2.创建教员信息表并录入表数据
CREATETABLEjiaoyuan
(
jiaoyuanidCHAR(6)PRIMARYKEY,
xingmingCHAR(8)notnull,
xingbieCHAR
(2)CONSTRAINTsex_CheckCHECK(xingbie='男'ORxingbie='女')notnull,
dianhuachar(11)notnull,
dizhichar(20),
wenpingchar(4),
rzlxchar(4),
)
图3-3教员信息表
3.创建科目表并录入表数据
CREATETABLEkemu
(
kemuidCHAR(6)PRIMARYKEY,
mingchengCHAR(10)notnull,
nianjiCHAR(6),
danjiaint,
)
图3-4科目信息表
4.创建学员信息表并录入表数据
CREATETABLExueyuan
(
xueyuanidCHAR(6)PRIMARYKEY,
xingmingCHAR(8)notnull,
xingbieCHAR
(2)CONSTRAINTsex_ChkCHECK(xingbie='男'ORxingbie='女')notnull,
dizhichar(20),
dianhuaint,
xxcdchar(4),
)
图3-5学员信息表
5.创建教授表并录入表数据
CREATETABLEjiaoshou
(
jiaoyuanidCHAR(6)notnull,
kemuidchar(6)notnull,
sksjdatetimenotnull,
primarykey(jiaoyuanid,kemuid),
FOREIGNKEY(kemuid)REFERENCESkemuondeletecascade,
FOREIGNKEY(jiaoyuanid)REFERENCESjiaoyuanondeletecascade,
)
图3-6教授表
6.创建学习表并录入表数据
createtablexuexi
(xueyuanidCHAR(6)notnull,
kemuidchar(6)notnull,
xxcjintcheck(xxcj<=100)notnull,
kssjdatetime,
primarykey(xueyuanid,kemuid),
FOREIGNKEY(xueyuanid)REFERENCESxueyuanondeletecascade,
FOREIGNKEY(kemuid)REFERENCESkemuondeletecascade,)
图3-7学习表
7.创建评价表并录入表数据
CREATETABLEpingjia
(
xueyuanidCHAR(6)notnull,
jiaoyuanidchar(6)notnull,
pjsjdatetimenotnull,
skzlintcheck(skzl<=100),
sktdintcheck(sktd<=100),
primarykey(xueyuanid,jiaoyuanid),
FOREIGNKEY(xueyuanid)REFERENCESxueyuanondeletecascade,
FOREIGNKEY(jiaoyuanid)REFERENCESjiaoyuanondeletecascade,
)
图3-8评价表
3.4.3.建立视图
视图作为一种数据库对象,为用户提供一种检索数据表中数据的方式。
视图被看成是虚拟表,它并不表示任何物理数据,只是用来查看数据的视窗而已。
建立视图kemuxinxi_view,可以查看科目编号、科目名和科目年级的视图,如图3-9、3-10所示
usejiajiaoxinxi
createviewkemuxinxi_view
as
selectkemuid,mingcheng,nianji
from
kemu
图3-9创建视图
图3-10查询视图
3.4.4.建立索引
在数据库中的某些列上建立索引可以加快查询速度,减少服务器的响应时间。
在查询数据的时候先查看一下索引而不是扫描整个数据表,这就相当于先翻翻书籍的目录,从索引里确定了用户要查找的数据在表中的哪些行里面,再去扫面这些行,查询的速度会大大加快。
1.在jiaoyuan表中的jiaoyuanid列上创建名为jiaoyuanid_index的聚集索引,如图3-11所示。
usejiajiaoxinxi
go
createclusteredindexjiaoyuanid_indexonjiaoyuan(jiaoyuanid)
go
图3-11创建聚集索引
2.在xueyuan表中的xueyuanid列上创建名为xueyuanindex的非聚集索引,如图3-12所示。
usejiajiaoxinxi
go
createnonclusteredindexxueyuanindexonxueyuan(xueyuanid)
go
图3-12创建非聚集索引
3.4.5.建立存储过程
为了易于修改和扩充方便,将负责某种独立功能的语句集中起来并按照用途分别独立放置,以便能够反复使用,因此我们要在数据库中建立存储过程。
存储过程预编译并存储在数据库中的特性,不仅能提高应用效率,确保一致性,更能提高系统执行速度。
1.针对教员信息表jiaoyuan,创建一个名称为jiaoyuan_proc1的存储过程,该存储过程的功能是从数据表jiaoyuan中查询所有女教师的信息,如图3-13、3-14所示。
usejiajiaoxinxi
go
createprocedurejiaoyuan_proc1
as
select*fromjiaoyuanwherexingbie='女'
go
图3-13创建存储过程
2.执行存储过程jiaoyuan_proc1.
usejiajiaoxinxi
executejiaoyuan_proc1
go
图3-14执行触发器
3.4.6.建立触发器
触发器是一种在数据表或视图被修改时自动执行的内嵌存储过程,主要是通过事件进行触发的。
触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。
建立一个update触发器(T2):
在数据库jiajiaoxinxi的worker表中的教员编号是唯一且不可改变的,创建触发器T2实现更新中编号的不可改变性,输入如下语句:
usejiajiaoxinxi
go
createtriggerT2onjiaoyuan
forupdate
as
ifupdate(jiaoyuanid)
begin
print'everyjiaoyuanidcannotbechanged'
rollbacktransaction
end
将教员编号为“0004”的教员性别改为“男”,输入如下语句。
usejiajiaoxinxi
updatejiaoyuansetjiaoyuanid='0004'wherexingbie='男'
图3-15更新触发器
分析:
更新数据时违反了触发器T2的约束,操作失败。
4.结论
本次课程设计的任务是设计家教信息系统,在对家教信息系统设计前,首先要对用户的实际需求进行了深入的了解并及时作出必要的需求分析,通过需求分析进而进行概念结构设计部分(即E-R图)、E-R图转换关系模型、数据库的物理结构设计以及数据库的实施与维护。
家教信息系统的课程设计主要针对数据库方向,本次课程设计对数据库进行了全面性的设计与覆盖,数据库设计在以后的网站建设中充当着重要作用,是必不可少的,所以本次课程设计为以后个人整个计算机的设计领域打下了坚实的基础。
5.学习体会
通过这次课程设计的实践,发现自身存在的不足之处,纵看整个设计过程,需求分析设计和概念结构设计是整个数据库课程设计的重中之重,相当于数据库设计的地基,只有把地基夯实才能建成拔地凌空,气势恢宏的大楼。
本次设计虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决,从而对数据库课程设计也有了新的认识。
6.参考文献
[1]麦中凡,何玉洁.数据库原理及应用[M].北京:
人民邮电出版社,2008.
[2]王珊,萨师煊.数据库系统概论[M].北京:
高等教育出版社,2006.
[3]壮志剑.数据库原理与SQLServer[M].北京:
高等教育出版社,2006.
[4]王晟.SQLServer数据库开发经典案例分析(第3版).北京:
清华大学出版社出版,2005.
[5]黄维通.SQLServer数据库的技术与应用[M].北京:
清华大学出版社,2011.
[6]周爱武,汪海威,肖云.数据库课程设计[M].北京:
机械工业出版社,2012.
[7]丁宝康.数据库原理.北京:
经济科学出版社,2008.
[8]黄梯云.管理信息系统.北京:
中国铁道出版,2007.
7.致谢
在课程设计的过程中,首先要感谢的是我的指导老师冯春辉老师,感谢冯老师的悉心解惑和指导,当我碰到不明白的问题时,冯老师总是耐心的讲解,给我的设计以极大的帮助,使我获益匪浅,特别是在概念结构设计时,在冯老师的正确指导下才有了正确E-R图的呈现,为接下来的设计打下了基础,从而才有了整个数据库的呈现。