1、数据库原理与应用课程设计题 目: 实验选课系统数据库设计 系 别: 专业(含班级): 学 号: 姓 名: 指导教师: 职称 填表日期: 年 月 日一、选题依据和意义 实验选课系统作为教学过程中一个不可或缺的环节,是为了更好地管理实验选课信息而建立的。该系统可以让选课信息更加规范化、系统化、程序化,避免选课系统的随意性,提高信息处理的速度和准确性,能够及时、准确、高效的查询或修改实验选课信息。加上局域网的开放,更为学生选课带来很大的便捷,学生可通过校园网进行选课,增加选课的灵活性,提高了学校选课工作的效率,教务处的教师可以依据选课系统对选课信息进行合理的管理,为广大师生及相关工作人员节省了时间。
2、二、需求分析1.需求调查与分析随着信息技术的发展、局域网的应用和数据的逐渐增多,近年来,人们逐渐用网络信息管理系统代替人工对管理的信息。高校也逐渐用选课系统代替人工的选课已增加选课的系统化、规范化、灵活性,提高选课的效率和对选课信息的管理效率。2.业务流程图:从教师开课开始,经过教务处的审核之后,教务处结合实验室的相关信息整理出有效的课程提供给学生们进行选择。图1:实验选课系统业务流程图三、概念结构设计概念结构设计的含义:将需求分析得到的用户需求抽象为信息结构即概念模型的过程。它是整个数据库设计的关键。本设计由上面的实验选课系统业务流程图抽象(分类、聚集、概括)可得到实验选课系统的概念模型,用
3、如下E-R图表示:图2:实验选课系统E-R图四、逻辑结构设计:根据实验选课系统E-R图和以下转换规则可得选课系统的关系模式。转换规则:1、一个实体型转换为一个关系模式2、实体型间的联系有以下几种:(1)1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;(2)1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;(3)m:n(3个或3个以上)联系转换为一个关系模式。与该联系相连的各实体的码及联系本身的属性均转换为关系的属性;(4)具有相同码的关系模式可合并。1.实验选课系统关系模式:如图2所示,按照上面的转换规则,可得实验选课系统的关系模式如下: (1
4、)教师(教师号,姓名,密码,性别,年龄,系别,职称,电话);(2)课程(课程号,课程名,学时,学分,实验室编号);(3)学生(学号,姓名,密码,性别,年龄,系别,班级);(4)实验室(实验室编号,实验室名称,地点,电话);(5)开课(教师号,课程号,时间); (教师号,课程号)分开为外键(6)选修(学号,课程号,成绩);(学号,课程号)分开为外键2. 数据库关系图: 按照上面得出的实验选课系统关系模式,创建数据库syxk,并建立与关系模式对应的数据表,并建立各表之间的关系,可得实验选课系统的数据库关系图如下:图3:实验选课系统关系图3.视图设计视图是从一个或几个基本表(或视图)导出的表(虚表)
5、,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍放在原来的基本表中,所以,当基本表中的数据变化时,视图中的数据也会发生变化。也可把视图看做一个窗口,通过它可看到自己感兴趣的数据及其变化。视图定义后也可以对其进行更新(增、删、改),也可在一个视图上再定义新的视图,但对视图的更新(增、删、改)有一定的限制。视图的作用:1、能够简化用户的操作。用户可将注意力集中在自己所关心的数据上;2、使用户能以多种角度看待同一数据;3、对重构数据库提供了一定程度的逻辑独立性;4、能够对机密数据提供安全保护;5、适当的利用视图可以更清晰的表达查询。下面针对本设计,即实验选课系统定义了几个视图: (1)
6、功能:建立信息系学生的视图,并要求进行修改和插入操作时仍需要保证该视图只有信息系的学生 代码:create view is_studentasselect sno,sname,agefrom studentwhere dept=信息系with check option(2)功能:建立student表中所有女生记录的视图 代码:create view F_studentasselect * from studentwhere sex=女4.函数设计定义函数并编译存在数据库的服务器中,使应用程序可以直接调用编译好的函数,提高计算机计算效率,节省时间。 (1)功能:按课程号查询选修该课程同学的平均成
7、绩 代码:create function get_avg(cno char(10)returns int asbegindeclare temp intselect temp=avg(degree) from scwhere cno=cnoreturn tempend调用:select dbo.get_avg(c01) as c01课程的平均成绩(2)功能:按教师号查询他所开的所有课程 代码:create function get_course(tno char(10)returns char(10) asbegindeclare temp char(10)select temp=cnofro
8、m commencewhere tno=tnoreturn tempend调用:select dbo.get_course(t10001) as t10001教师所授的所有课程5.存储过程设计跟函数一样,存储过程也是预先编译好放在数据库服务器上等应用程序调用来提高效率的。此外,存储过程针对的是复杂的,常用的工作,以提高运行效率。存储过程的特点有:1、因为存储过程是预先编译好的,所以运行效率高;2、存储过程降低了客户机和服务器间的通信量。客户机上的应用程序主要通过网络向服务器发出存储过程的名字和参数,RDBMS就会执行多条SQL语句,并执行数据处理,最终只有结果才返回客户端;3、方便实施企业规划
9、。可把企业规则的运算程序写成存储过程放入数据库服务器有RDBMS管理,既有利于集中控制,又方便进行维护。 (1)功能:查询选修数据库的学生的学号和姓名、课程号、课程名及成绩 代码:create proc sc_searchasbegin select student.sno,sname,o,cname,degreefrom student,sc,coursewhere student.sno=sc.sno and o=o and cname=数据库end 调用:exec sc_search(2)功能:按课程号查询该课程的教师信息 (有参数) 代码:create proc t_searchcou
10、rse_number varchar(10)asbegin select tname,sex,age,dept,title,tel from teacher,commence where cno= course_number and commence.tno=teacher.tnoend调用:exec t_search c016.触发器设计触发器是用户定义在关系表上的一类由事件驱动的特殊的(存储)过程。只能在当前数据库中创建,只有表的拥有者才可以在表上创建或删除触发器。当该表插入(insert)、更新(update)、删除(delete)等事件发生时(一张表的update、insert、del
11、ete操作上可设置多个触发器),所设置的触发器即会自动执行,以进行维护数据的完整性,或其他的特殊的数据处理过程。此外,触发器还可通过数据库中的相关表进行层叠更改,但使用update语句可以一次对多行数据进行修改,而触发器只被触发一次。也可强制限制,这些限制比用 check 所定义的约束更复杂。 (1)功能:当对成绩表进行删除操作时,统计被删除记录的个数。 代码:create trigger sc_trigger on sc for delete as begin declare count varchar(30) select count=count(sno)from deleted coun
12、t=count+个记录被删除! print count end如执行以下操作: delete from scwhere degree=90(2)功能:当在学生表中添加用户的同时在选修的成绩表中也添加的该用户。 代码:create trigger student_sc on student for insert asbegindeclare number varchar(10)select number=sno from insertedinsert into sc(sno,cno) values (number,c06)end如执行以下操作:insert into student values
13、( s03005,tom,03005,男,23,网工系,5)五、数据库系统功能模块设计实验选课系统的目的是为了利用局域网进行网络选课,提高工作效率。它的基本流程是从教师开课到教务处审核,学生选课,教务处排课一系列的操作。当然,根据权限的不同,每一级用户对数据库操作的权限也有所区别,管理员拥有最大权限,统筹全局,管理查看所有的用户信息;教师对自己所教授课程的相关信息拥有全部权限,可管理选修该门课同学的课程信息,如成绩录入等;学生是其中权限较小的一个角色,他只能对自己的信息进行查询和管理自己的选课信息,如选课、更改选课。具体的实验选课系统功能模块如下图所示:图4:实验选课系统功能模块图课程设计小结
14、(收获、体会、建议)转眼间,数据库系统概论的学习已接近尾声。这学期,我们真正走进了数据库的学习,虽然在之前的项目设计中我们有接触过oracle、mysql等数据库,但那些都是简单的应用,我们并没有从专业的角度去审视它。经过一学期的努力,我们从什么是数据库开始到数据库的设计、编程,不得不说我们学习了很多。如何把现实问题抽象出来,最后用数据库系统的描述。一步一个脚印,理论课上老师认真详细的备课、讲解,帮助我们理解理论知识;实验课上老师手把手地教导我们,不仅给我们指引了方向,还给大家举例说明,在加快我们完成上机操作效率的同时,让我们印象更加深刻。在这里,我要也别感谢我们的陈秀琼老师,是她的耐心和细心
15、帮助我们一路向前。下面,我用几点谈谈本次课程设计的总结:1.先谈谈本次设计的过程,我们运用数据库系统概论中的一系列知识。首先,最基本的我们必须保证数据关系的完整性约束,如实体完整性、参照完整性(外键的定义等)、用户自定义的完整性。懂得数据库系统的三级结构模式,即外模式、模式、内模式之间的转换,才能将现实问题经过一次次的抽象和转换使其和数据库挂上钩,才能用数据库正确存储相应的信息并处理期间的关系。我们还必须保证数据库的安全性,通过授权、创建角色、定义约束,规则、等在保证数据库安全性的基础上进行有序的安全的操作以保证数据库中数据的安全。其次,就是数据库的设计和应用开发。从需求分析开始,到业务流程图
16、的绘制,经过几次的修改,终于比较契合的把现实问题抽象出来并体现在业务流程图上;接着是E-R图的设计,用分类、聚集、概括等方法实现业务流程图到E-R图的转换,再根据E-R图向关系模型转换的一系列规则完成关系模式的转换,紧接着根据关系模式建数据库并创建相应的表。到此,数据库的基本设计已经完成。为了提高计算机的运行效率,更好的管理数据库中的数据和保证数据的完整性,我还用视图方便数据查询,定义函数、存储过程、触发器等简化一些复杂的运用,让一些常用的工作运行起来更快速、便捷。2.接下来是本次课程设计中我的收获和体会。本次课程设计中我综合了数据库系统概论的主要知识点,让理论充分结合了实际,加深了我对数据库
17、系统的理解。设计过程中由于用到的知识点比较多,有的是刚学不久的,课程设计让我加深了理解,记忆更深刻,有的由于时间比较长有遗忘的,经过课程设计,让我重新巩固了知识并在原来的基础上有了新的理解。只要努力了就会有收获,设计的过程虽然有时候会有困惑,会卡。但总的来说,设计的过程是快乐多于痛苦的,它让我巩固了知识,让我懂得如何将理论结合实践,懂得如何运用所学的知识,在加深理解,加深印象的基础上有新的感悟。在设计过程中,我还帮同学解决了一些小问题,在帮助别人的同时也让我从多方面巩固知识,给一些自己没发现的小漏洞打了补丁。3.最后,说说我的小建议。由于课程设计老师有提供几个选题,有些同学的选题是一样的,虽然这样可以让大家在一起讨论,说出自己的见解,然后总结出对问题更全面的考虑,但不排除有些同学抱着投机取巧的心理,所以我建议同学们自己多动手,这样才能加深对知识的理解,提高自己的能力。前面说到人多见解也多,那么我们还可以利用网络资源多看看别人的见解,还可以请教专业人士或查阅一些相关的资料让我们在考虑问题的时候能更加全面。本次课程设计结束了,再此,我要再次感谢老师的悉心教导和那些帮助过我的同学们。机会总是留给有帮助的人,让我们一起行动吧!- 10 - / 10- 10 -