基于存储过程的简易教学系统设计与实现
2016-12-20杜环环
杜环环,栾 静
(新疆师范大学计算机科学技术学院,新疆乌鲁木齐830054)
基于存储过程的简易教学系统设计与实现
杜环环,栾 静
(新疆师范大学计算机科学技术学院,新疆乌鲁木齐830054)
基于存储过程的执行速度快、安全性高等优势,利用存储过程分析设计一种简易教学系统。在分布式应用环境下将对数据库的访问做在业务逻辑层上,通过存储过程实现对数据的所有操作处理,这样既可以降低整个应用程序的复杂性,也可以提高数据处理速度,方便用户操作。针对存储过程和MVC三层架构模式的优点,设计实现了简易教学系统,并给出了设计原理及实现方案。
存储过程;MVC三层架构模式;简易教学系统
一、引言
随着社会的发展,学校中教师和学生的规模不断扩大,使教师和学生信息数据量急剧增长,从而导致管理教师和学生信息的工作变得越来越繁杂,如何利用计算机技术帮助教师更快、更好地完成此类工作是非常有必要的。[1]通常情况下,对于基本信息的添加、删除、修改和查询等基本操作,使用Excel软件来完成也是可行的,但安全性不能保证,共享性体现不了,并且查询很不方便。尤其当涉及多个数据表格联合查询时,使用Excel软件进行数据处理会增加很大的工作量,在对其中一个数据表格进行处理时,也不能确保其它相关联的数据表格中数据的一致性。[2]因此,需要借助软件开发技术,编写小的应用程序,利用数据库技术对大量的数据进行保存、添加、删除、修改等操作,以便能够更好地利用数据资源。
Microsoft SQL Server是Microsoft研制开发的一款数据库管理系统,具有操作简单易学的特点,用户可以以很高的安全性、可靠性和可扩展性运行关键任务,具有很强的安全保密性。作为数据存储,SQL Server性能可靠,数据管理功能强大。[3]以其低价位、功能多、用户界面友好而被广泛地应用在大多数分布式Web应用程序中,是目前最常用的数据库系统之一。[4]
二、SQL应用与设计环境选择
SQL(Structured Query Language)语言是一个通用的、功能很强的关系数据库的标准语言,是一种介于关系代数与关系演算之间的结构化查询语言,其功能不仅仅是查询,用于存取数据以及更新、统计和管理关系数据库系统。
1.SQL语言对数据操作具有的优点[5]
(1)非过程化语言;
(2)统一语言,是所有关系数据库的公共语言。
SQL Server主要功能及其命令动词如表1所示:
表1 SQL主要功能及其命令动词
数据定义是通过CREATE、DROP、ALTER命令,实现对基本表、视图以及索引文件的定义、修改和删除操作,还可以定义存储过程、触发器等模块。数据操纵是通过SELETE、INSERT、UPDATE、DELETE命令,实现数据查询和数据更新两种操作语句。其中,数据查询是指对数据库中的数据查询、统计、排序、检索、分组等操作,数据更新是指数据的插入、删除、修改等操作。数据控制是指对数据的操作权限控制。通过GRANT、REVOKE命令实现对数据库用户的授权和收权的存取控制,以保证数据的安全性。
对数据库的操作主要是通过以上SQL命令动词实现,但编写实现系统的程序代码时,考虑应用在分布式环境中,使用独立的SQL命令实现对数据库的访问,不利于数据的安全保护,因此会采用MVC框架结构和存储过程实现数据库访问。
MVC框架结构由模型(Model)、视图(View)和控制器(Controller)三部分组成。MVC结构将传统的输入、处理和输出功能映射到一个逻辑的图形化用户界面结构中。[6-9]MVC框架结构如图1所示。
图1 MVC框架结构
模型(Model)表示业务逻辑操作等,在MVC中拥有最多的处理业务,负责在数据库中存取数据,能为多个视图提供数据操作。视图(View)是用于屏幕上的显示。模型进行操作之后,其结果通过视图来显示。控制器(Controller)用于管理用户与视图发生的交互。用户发出请求,控制器将相应的信息传递给模型进行处理,模型与视图匹配在一起,共同完成用户的请求。[6]他们各自处理任务。使应用程序的输入、处理和输出分开。
当前台页面发送数据请求时,控制层接受请求并调用相应模型去处理请求,由模型调用存储过程,在服务器端得到处理结果后,再将返回的数据在前台显示,模型调用的是存储过程,而不是SQL基本语句,屏蔽了数据库中表的结构、数据关联、用户使用权限等重要信息,提高了系统安全性。将业务逻辑封装在数据库系统的存储过程中,可以大大提高整个软件系统的可维护性,提高系统的共享性。合理编写存储过程,可以最大限度地利用SQL Server的各种资源。
2.SQL存储过程具有的优点
(1)执行速度快,改善系统性能
存储过程在服务器端运行,可以利用服务器强大的计算能力和速度提高执行速度。而且存储过程是预编译的,第一次执行后的存储过程会驻留在高速缓存中,以后直接调用,执行速度很快,如果某个操作需要大量的T-SQL语句或重复执行,那么使用存储过程比直接使用T-SQL语句执行得更快。
(2)减少网络流量
用户可以通过发送一条执行存储过程的语句实现一个复杂的操作,而不需要写上百条T-SQL语句,这样可以减少在服务器和客户端之间传递语句的数量,减轻了服务器的负担。
(3)增强代码的重用性和共享性
存储过程在被创建后,可以在程序中被多次调用,而不必重新编写。所有的客户端都可以使用相同的存储过程来确保数据访问和修改的一致性。而且存储过程可以独立于应用程序而进行修改,大大提高了程序的可移植性。
(4)提供了安全机制
如果存储过程支持用户需要执行的所有业务功能,SQL Server可以不授予用户直接访问表、视图的权限,而是授权用户执行该存储过程,这样可以防止把数据库中表的细节暴露给用户,保证表中数据的安全性。
鉴于SQL存储过程的以上优点,本文设计系统应用在网络环境中,采用存储过程处理数据,存储过程封装数据库操作,可以有效提高程序的性能。[8]调用存储过程时,通过指定存储过程的名字并给出参数(如果存储过程带有参数)来执行,避免了代码冗余,从而提高系统开发效率。
三、简易教学系统的设计
针对中学生的教学管理工作,在数据量比较大的情况下,使用存储过程将简单的查询组合在一起,将数据的处理转移到后台数据库中,基于存储过程和MVC三层架构模式设计实现简易教学系统,实现了学生、教师和课程信息的管理。本系统采用了Microsoft Windows 7操作系统、SQL Server 2008作为后台数据库,采用MyEclipse10开发环境,设计并实现了一套完善的简易教学系统。
1.系统功能分析
简易教学系统针对的是学校里的教师、学生以及课程模块的管理。[10-17]主要功能包括:学生基本信息管理、教师基本信息管理、课程信息管理、学生成绩管理、授课信息管理。其功能结构如图2所示:
图2 简易教学系统功能结构
学生基本信息管理:该模块实现了增加学生基本信息、修改学生基本信息、删除学生基本信息以及查询学生基本信息等。
教师基本信息管理:该模块实现了增加教师信息、删除教师信息、修改教师信息以及查询教师信息等。可以统计某一地区教师信息,教师性别统计及某年龄段的统计。可以根据身份证的前四位查询该地区教师的信息等。
课程信息管理:该模块实现了增加课程信息、修改课程信息、删除课程信息以及查询课程信息。
学生成绩管理:该模块实现了增加学生成绩、修改学生成绩、删除学生成绩、查询学生成绩、查询学生排名、统计选修科目等。学生也可以查询某门课程的成绩,不及格门数统计以及总评成绩等。
授课课程信息管理:该模块实现了增加授课信息、修改授课信息、删除授课信息以及查询授课信息等。
2.系统数据库设计
(1)数据库表设计
本研究中,系统后台数据库主要设计了5个数据表——学生信息表、教师信息表、课程信息表、学生成绩表和授课信息表。各数据表及其主要字段如下所示(下画线代表主键):
学生信息表(学号、姓名、性别、身份证号、民族、班级号、入学时间、家庭地址、政治面貌)
教师信息表(工号、身份证、姓名、性别、民族、年龄、出生地址、专业、职称)
课程信息表(课程号、课程名、开课学期、学分)
学生成绩表(学号、课程号、成绩、学期、学年)
授课信息表(工号、课程号、班级号、课程名、授课地点、授课学期、周学时)
(2)存储过程设计
存储过程是一组为了完成特定功能的SQL语句集,[9-11]存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法。存储过程因其执行效率高、与事务处理结合、运行更安全等优点,在数据库应用程序中被广泛采用。创建存储过程的语法为:[12]
CREATE PROCEDURE〈过程名〉[;〈版本号〉]
[@〈参数名〉〈参数类型〉[=〈默认值〉][OUTPUT]…]
[WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]
AS〈SQL语句组〉
在上面的CREATE PROCEDURE语句中,尖括号“〈〉”里的内容是必须要有的。方括号“[]”里的内容是可选的,参数的命名必须加“@”符号。方括号里符号“|”是或的关系,两边的选项可以任选一项。
存储过程创建后,以编译的形式存储于数据库服务器端,供应用程序调用。如果不调用,存储过程是不会执行的。通过调用存储过程时,实参的数量、顺序、类型要与定义存储过程时的形参的数量、顺序、类型相匹配。
存储过程按返回的数据类型,可以分为两类:[13-14]一类简单存储过程相当于SELECT语句,用于查询数据,查询到的数据以结果集的形式返回;另一类存储过程是通过输出参数返回信息,或不返回信息只执行一个动作。
根据不同的功能需求,本研究系统设计了如下存储过程。
简单存储过程主要包括:
〉查询所有学生的信息。
〉统计不同性别的学生人数。
〉统计所有课程都合格的学生信息。
〉查询所有教师的基本信息。
带参数的存储过程,向存储过程指定输入、输出参数的主要目的是通过参数向存储过程输入和输出信息来扩展存储过程的功能。通过使用参数,可以多次使用同一存储过程并按用户要求查找所需要的结果。
学生基本信息管理:
〉查询某学生的基本信息。
〉根据身份证,计算某学生的年龄。
〉修改某学生的家庭住址。
〉删除某学生的信息。
教师基本信息管理:
〉统计某教师的基本信息。
〉统计教师信息表中某地区的教师信息和人数。
〉统计某年龄段的教师人数。
对于课程信息管理:
〉查询某课程的基本信息。
〉修改某课程的学分。
〉删除某课程的基本信息。
对学生成绩表:
〉查询某学生的所有成绩以及该学生所选修课程门数。
〉查询某学生所有不及格成绩,并统计不及格课程门数。
〉查询某学生所学课程的总评成绩及班级排名。
〉查询某学生某门课程的成绩。
〉查询某门课程的统计信息(最大值、最小值、平均值、总人数)。
〉查询某课程所有比平均成绩高的学生姓名及成绩。
〉统计某门课程不及格学生人数。
〉统计某课程在某分数区间的学生成绩。
四、系统实现
通过以上分析设计,完成了简易教学系统。系统界面主要由3部分组成:一是显示系统的名称界面,功能是显示系统的标题;二是功能的导航,目的是链接到各个具体功能界面、对系统的各个功能进行的管理操作;三是结果显示,目的是能够显示所有功能的内容,是对教学信息系统模块进行具体操作。
系统存储过程示例如下:
(1)查询某学生某门课程的成绩。功能是根据学生姓名和课程名查询学生这门课程的成绩。
(2)查询某学生所有不及格的成绩,并统计不及格课程门数。功能是根据学生姓名查询不及格的科目成绩,并统计不及格科目。
系统界面如图3所示:
图3 简易教学信息设计实例系统界面
五、总结与展望
本文讨论了SQL基本数据处理与存储过程数据处理的特点,并在介绍存储过程优点的基础上,结合MVC三层架构模式,分析、设计并实现了基于存储过程的简易教学系统,可以方便管理教师和学生信息,为类似教学信息系统的设计与实现提供借鉴。但是,该系统在界面优化、细节设计等方面还存在一些不足,比如增加管理员和学生登录界面,而且可以增加考勤模块,通过管理学生的日常考勤,可以统计学生的最终成绩。下一步将在本文研究的基础上,展开考勤方面的研究,以进一步优化和完善系统功能。
[1]杨开城.教学系统分析技术的初步研究[J].中国电化教育,2007(8):1-5.
[2]郑少兰.电子表格与SQL Server的结合应用[J].电脑知识与技术,2006(35):17-18.
[3]石道生,张士军,孙山.SQL Server数据库触发器与存储过程技术在自定义数据表中的应用[J].计算机与现代化,2004(3):22-24,27.
[4]陈一明.SQL Server数据库应用技巧探讨[J].科学技术与工程,2008(12):3334-3337.
[5]苗雪兰,刘瑞新,宋歌.数据库系统原理及应用教程(第3版)[M].北京:机械工业出版社,2011:1-325.
[6]康建萍.基于MVC模式的Struts框架研究与应用[J].电脑知识与技术(学术交流),2007(2):49-51.
[7]张计龙,张成洪,张凯,宓詠,郭超,郭家银.基于改进MVC的高校人事管理系统[J].计算机工程,2004(8):191-194.
[8]白杨.探究SQL SERVER存储过程[J].电脑知识与技术,2011(34):8769-8770,8776.
[9]王鹏,王晓亮,张喆,吴仁彪.基于存储过程的通航飞行数据处理系统[J].计算机工程与设计,2015(4):1084-1089.
[10]王翠娥.基于WEB的教学系统的设计与实现[D].电子科技大学,2013.
[11]常红梅.基于存储过程的数据库安全性实践初论[J].网络安全技术与应用,2015(4):112-114.
[12]季刚.基于存储过程的主从服务器数据库同步的实现[J].计算技术与自动化,2012(3):114-116.
[13]陈潇.SQL Server2008数据库存储过程的应用[J].软件工程师,2015(6):18-19.
[14]张申勇,蔡培茂,廖继勇,乐小燕,孙细斌.浅析SQL Server中视图、存储过程和函数的异与同[J].电脑知识与技术,2011(23):5570-5573,5577.
[15]李卫华,颜建军.基于MVC模式的人事管理系统的设计与实现[J].三明学院学报,2009(4):416-419.
[16]徐红,李睿,李进,曾珂.基于存储过程的计费查询统计系统设计与实现[J].现代电子技术,2005(13):76-78.
[17]沈黎.基于网络数据库的存储过程和触发器应用研究[J].西南师范大学学报(自然科学版),2016(3):51-55.
(编辑:王天鹏)
TP311
A
1673-8454(2016)23-0086-04