家教信息管理系统数据库课程设计.docx
1. 绪论-1-2. 总体设计-1-2.1. 数据流程分析图-1 -2.2. 系统功能模块设计-1 -2.3. 安全性设计-2 -3. 数据库设计-2-3.1. 需求分析-2 -3.1.1. 任务概述-2-3.1.2. 系统功能需求-2-3.2. 概念结构设计-2-3.2.1. 数据需求-2-3.2.2. E-R 图设计-3-3.3. 逻辑结构设计-3-3.3.1. 关系模型-3-3.3.2. 数据库完整性设计-3-3.4. 物理结构设计-4 -3.4.1. 设计表-4-3.4.2. 数据库与表的创建-6-3.4.3. 建立视图-9-3.4.4. 建立索引-10-3.4.5. 建立存储过程 -11-3.4.6. 建立触发器-11-4. 结论-12-5. 学习体会-12-6. 参考文献-12-7. 致谢-13-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如下。评价时间V评价授课质量授课态度授课时间教授图3-1家教信息系统E-R图L学员编号)/ 姓名)/匕乂.性别)学员绘(一地址)电话学习程度3.3. 逻辑结构设计数据库逻辑结构设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程。3.3.1. 关系模型由E-R图转换成关系模式。首先,将4个实体转换成关系模式的结果如下:教员(教员编号,教员姓名,性别,电话,地址,文凭,任职类型)科目(科目编号,科目名称,科目年级,课时单价)学员(学员编号,学员姓名,性别,地址,电话,学习程度)其次,将3个多对多类型的联系转换为关系模式,如下:教授表(教员编号,科目编号,授课时间)学习表(学员编号,科目编号,学习成绩,开始时间)评价表(学员编号,教员编号,评价时间,授课质量,授课态度)【注:带下划线的属性为关系的主属性(即关键字)。对于上述后3个表中都引用了外 键,引用的外键“教员编号”都参照“教员表”的主键“教员编号”;引用的外键“科目 编号”都参照“科目表”的主键“教员编号”;引用的外键“学员编号”都参照“学员表” 的主键“学员编号”。】3.3.2, 数据库完整性设计(1)规范化设计1. 教员表:教员编号f教员姓名,教员编号f性别,教员编号f电话,教员编号f地 址,教员编号f文凭,教员编号f任职类型。没有传递依赖,没有部分依赖,则此范式属 于第三范式。2. 科目表:科目编号科目名称,科目编号科目年级,科目编号f课时单价。没有 传递依赖,没有部分依赖,则此范式属于第三范式。3. 学员表:学员编号f学员姓名,学员编号f性别,学员编号f地址,学员编号f电 话,学员编号f学习程度。没有传递依赖,没有部分依赖,则此范式属于第三范式。4. 教授表:(教员编号,科目编号)f授课时间。没有传递依赖,没有部分依赖,则此 范式属于第三范式。5. 学习表:(学员编号,科目编号)f学习成绩,(学员编号,科目编号)f开始时间。 没有传递依赖,没有部分依赖,则此范式属于第三范式。6. 评教表:(学员编号,教员编号)f评价时间,(学员编号,教员编号)f授课态度, (学员编号,教员编号)f授课质量。没有传递依赖,没有部分依赖,则此范式属于第三范 式。(2)约束设计1. 在教员、学员表中建立一个检查约束,即“性别”属性不是'男'就是'女, check(sex='男,or sex='女')。2. 在学习表中建立一个检查约束,即“成绩”属性在0到100之间,check(score >=0 and score<=100)。3. 在评教表中,授课质量和授课态度属性设置检查约束,范围在0到100星之间, check(属性字段>=0 and属性字段<=100)。(3)视图设计建立视图kemuxinxi_view,可以查看科目编号、科目名和科目年级的视图。索引设计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电话IntXxcd学习程度Char(4)表4教授表字段名含义说明数据类型是否为空约束设计Jiaoyuanid教员编号Char(6)否主键、外键Kemuid科目编号Char(6)否主键、外键Sksj授课时间Datetime否表5学习表字段名含义说明数据类型是否为空约束设计Xueyuanid学员编号Char(6)否主键、外键Kemuid科目编号Char(6)否主键、外键Xxcj学习成绩Int否0 到 100Kssj开始时间Datetime表6评价表字段名含义说明数据类型是否为空约束设计Xueyuanid学员编号Char(6)否主键、外键Jiaoyuanid教员编号Char(6)否主键、外键Pjsj评价时间DatetimeSkzl授课质量Int否0 到 100Sktd授课态度Int0 到 1003.4.2. 数据库与表的创建1. 创建数据库jiajiaoxinxi,如图3-2所示。 D藉库 田口紊耕据库 0口数据库快照 0 |J ReportServer 0 | J Rep ort S erverTem pDB 0 | j Jiajiaoxinxi 图 3-2 数据库 jiajiaoxinxi2. 创建教员信息表并录入表数据CREATE TABLE jiaoyuan( jiaoyuanid CHAR(6) PRIMARY KEY, xingming CHAR(8) not null, xingbie CHAR(2) CONSTRAINT sex_Check CHECK xingbie='男'OR xingbie='女')not null, dianhua char (11) not null, dizhi char (20), wenping char (4), rzlx char (4), )jiacyjanidxingmingxingbiedianhuadizhi0001童雪丽女1870F102569邯郸市复兴区0002J .'!男15603175&79沧州市运河区0003黄海峰男15 50105620邯郸市魏县0004刘岩女13663113023石家正出桥东区0005单勇男18865S9B896廊坊市霸州0006范晓军女15031266538保定市北市区0007刮志丹女13 325598741邢台市桥西区OOOfl李红红女15636584523邢台市隆尧县000?杨佳康男1374551邢台市南和县0010高少东男13 564489404郴台市任昙3. 创建科目表并录入表数据 CREATE TABLE kemu ( kemuid CHAR(6) PRIMARY KEY, mingcheng CHAR(10) not null, nianji CHAR(6), danjia int, )kemuidmingchengnianjid己njiOOCl数学三年级OOC2英语五年蛆500003数学六年级网4英语八年缀100物理10030C6化学九年级10030C7英语商一150J'J'JS数学高二150化学高二150010物理高二150图3-4科目信息表4. 创建学员信息表并录入表数据CREATE TABLE xueyuan ( xueyuanid CHAR(6) PRIMARY KEY, xingming CHAR(8) not null, xingbie CHAR 2 ) CONSTRAINT sex_Chk CHECK ( xingbie ='男'OR xingbie='女')not null, dizhi char (20), dianhua int, xxcd char (4), )Mjevuanidxingmingxingbiedizhi0C1李春辉男石家庄市裕华区0002王崖男保定市北市区口wm赵辟推女邢台市轿东区0C4忘智巷男秦皇岛市昌藜县0C5网建华男石家庄市晋州30C6磐业女张家口市张北县口W7郭亚辉女邯郸市复兴区0C8张琳女邢台市挤西区0C9田立改女邢台市萍乡兵M10要小嫁女邢台市南京县5. 创建教授表并录入表数据 CREATE TABLE jiaoshou ( jiaoyuanid CHAR(6) not null, kemuid char ( 6) not null, sksj datetime not null, primary key(jiaoyuanid,kemuid), FOREIGN KEY (kemuid) REFERENCES kemu on delete cascade, FOREIGN KEY (jiaoyuanid) REFERENCES jiaoyuan on delete cascade, )jiaoyuanidkemuidsksj0001CIM 22013-2-2 0! 00:000002CIM 22oi>5-26a:aa:oaQ001O'JO 52CHM-9Q;0Q;0O加勇加无2013-6 0:00:00000c000 12013-5-9 0:00:000007汕5加站0062013-2-23 0:00:0000 OS0043113-5-9 0:00:00JQ100092013-6-16JJ102014-2-14 0:00:00图3-6教授表6. 创建学习表并录入表数据create table xuexi( xueyuanid CHAR(6) not null, kemuid char(6) not null, xxcj int check(xxcj<=100)not null, kssj datetime, primary key(xueyuanid,kemuid), FOREIGN KEY (xueyuanid) REFERENCES xueyuan on delete cascade,FOREIGN KEY (kemuid REFERENCES kemu on delete cascade,)xueyuanidhemuid渤a加显&80203036803030176COM7700061知00070J1090000889OKOJO1曲0006OJ0884CO明OJ069S7. 创建评价表并录入表数据 CREATE TABLE pingjia ( xueyuanid CHAR(6) not null, jiaoyuanid char(6) not null, pjsj datetime not null, skzl int check(skzl<=100), sktd int check(sktd<=100), primary key(xueyuanid,jiaoyuanid), FOREIGN KEY (xueyuanid) REFERENCES xueyuan on delete cascade, FOREIGN KEY (jiaoyuanid) REFERENCES jiaoyuan on delete cascade, )xueyuanidjiaayuariiciPj3jskzloaaiCiiiiM201B-6-16 0:00 !iJ0驼oaazCiM5Z013-8-3 0:00:008S00032013-1-3 O:QO:QO900004Ciiiii 12014-2-2 0:00:0096000500820 IB-4-40860007006ZO1+3-8。:加:加98000800072013-3-9 0:00:008900090062013-6-9 OiOOiOO9000100092013-10-10 0:0.明图3-8评价表3.4.3. 建立视图视图作为一种数据库对象,为用户提供一种检索数据表中数据的方式。视图被看成是 虚拟表,它并不表示任何物理数据,只是用来查看数据的视窗而已。建立视图kemuxinxi_view,可以查看科目编号、科目名和科目年级的视图,如图3-9、 3-10所示use jiajiaoxinxicreate view kemuxinxi_viewasselect kemuid,mingcheng, nianjifromkemu日口视图S 回 dbo.ke'muxinxi_view图3-9创建视图程函 - dLo-ko.iu表 - dL q . j i aokemuidmingctienij| nianjiE数学三年缀3002英语七年皱物3化学高二004物理高三005英语高二3006生物儿年皱0007英语高一ililO 日化学高一oog物理初三010数学初三图3-10查询视图3.4.4. 建立索引在数据库中的某些列上建立索引可以加快查询速度,减少服务器的响应时间。在查询 数据的时候先查看一下索引而不是扫描整个数据表,这就相当于先翻翻书籍的目录,从索 引里确定了用户要查找的数据在表中的哪些行里面,再去扫面这些行,查询的速度会大大 加快。1. 在jiaoyuan表中的jiaoyuanid列上创建名为jiaoyuanid_index的聚集索引,如 图3-11所示。use jiajiaoxinxigocreate clustered index jiaoyuanid_index on jiaoyuan(jiaoyuanidgodbofatncacafnJI列爵约-_+-A FK_jiaoshou_22AA296 蒙集)图3-11创建聚集索引2. 在xueyuan表中的xueyuanid列上创建名为xueyuanindex的非聚集索引,如图 3-12所示。use jiajiaoxinxigocreate nonclustered index xueyuanindex on xueyuan(xueyuanid)go列键约- dbo. Hueyuan十束发十-。岛 PK xue vTian 023II5AD 4 集)患xueyuaitindex林唯1 非聚集)图3-12创建非聚集索引3.4.5. 建立存储过程为了易于修改和扩充方便,将负责某种独立功能的语句集中起来并按照用途分别独立 放置,以便能够反复使用,因此我们要在数据库中建立存储过程。存储过程预编译并存储 在数据库中的特性,不仅能提高应用效率,确保一致性,更能提高系统执行速度。1.针对教员信息表jiaoyuan,创建一个名称为jiaoyuan_proc1的存储过程,该存储 过程的功能是从数据表jiaoyuan中查询所有女教师的信息,如图3-13、3-14所示。use jiajiaoxinxigocreate procedure jiaoyuan_proc1asselect * from jiaoyuan where xingbie='女'go-一J存储过程l+l LJ-冒图3-13创建存储过程2.执行存储过程jiaoyuan_proc1.use jiajiaoxinxiexecute jiaoyuan_proc1goJ结果消息jiaoTjanidxingmingxingbiedianhuadizhi1二口柬学丽女1B-7337327E5邢台市,桥东区2削燕女1洒淞盥邯郸市,永年县3"CCS刘海丽女1由9郭皿 U。U1 U U '1J邯郸市,邯郸市4EE李媛媛女1 Lru LrLrijru Lr i u u邢台市,泉北大街5李秀丽女I->u J tjrur邢台市,原德路图3-14执行触发器3.4.6. 建立触发器触发器是一种在数据表或视图被修改时自动执行的内嵌存储过程,主要是通过事件进 行触发的。触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。建立一个update触发器(T2):在数据库jiajiaoxinxi的worker表中的教员编号是 唯一且不可改变的,创建触发器T2实现更新中编号的不可改变性,输入如下语句:use jiajiaoxinxi gocreate trigger T2 on jiaoyuanfor updateasif update(jiaoyuanid)beginprint 'every jiaoyuanid cannot be changed'rollback transaction end将教员编号为“0004”的教员性别改为“男”,输入如下语句。use jiajiaoxinxiupdate jiaoyuan set jiaoyuanid='0004' where xingbie='男'III Ievery j iaccennct be changed.消息级别顼状态第,行II事务在触发器中结束批姓理已中止图3-15更新触发器分析:更新数据时违反了触发器T2的约束,操作失败。4. 结论本次课程设计的任务是设计家教信息系统,在对家教信息系统设计前,首先要对用户 的实际需求进行了深入的了解并及时作出必要的需求分析,通过需求分析进而进行概念结 构设计部分(即E-R图)、E-R图转换关系模型、数据库的物理结构设计以及数据库的实施 与维护。家教信息系统的课程设计主要针对数据库方向,本次课程设计对数据库进行了全面性 的设计与覆盖,数据库设计在以后的网站建设中充当着重要作用,是必不可少的,所以本 次课程设计为以后个人整个计算机的设计领域打下了坚实的基础。5. 学习体会通过这次课程设计的实践,发现自身存在的不足之处,纵看整个设计过程,需求分析 设计和概念结构设计是整个数据库课程设计的重中之重,相当于数据库设计的地基,只有 把地基夯实才能建成拔地凌空,气势恢宏的大楼。本次设计虽然感觉理论上已经掌握,但 在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决,从而对数据库课 程设计也有了新的认识。6. 参考文献1 麦中凡,何玉洁.数据库原理及应用M.北京:人民邮电出版社,2008.2 王珊,萨师煊.数据库系统概论M.北京:高等教育出版社,2006.3 壮志剑.数据库原理与SQL ServerM.北京:高等教育出版社,2006.4 王晟.SQL Server数据库开发经典案例分析(第3版).北京:清华大学出版社出 版,2005.5 黄维通.SQL Server数据库的技术与应用M.北京:清华大学出版社,2011.6 周爱武,汪海威,肖云.数据库课程设计M.北京:机械工业出版社,2012.7 丁宝康.数据库原理.北京:经济科学出版社,2008.8 黄梯云.管理信息系统.北京:中国铁道出版,2007.7. 致谢在课程设计的过程中,首先要感谢的是我的指导老师冯春辉老师,感谢冯老师的悉心 解惑和指导,当我碰到不明白的问题时,冯老师总是耐心的讲解,给我的设计以极大的帮 助,使我获益匪浅,特别是在概念结构设计时,在冯老师的正确指导下才有了正确E-R图 的呈现,为接下来的设计打下了基础,从而才有了整个数据库的呈现。