学生档案管理系统数据库设计与优化.doc

上传人:3d66 文档编号:1819310 上传时间:2019-01-10 格式:DOC 页数:11 大小:17.23KB
返回 下载 相关 举报
学生档案管理系统数据库设计与优化.doc_第1页
第1页 / 共11页
学生档案管理系统数据库设计与优化.doc_第2页
第2页 / 共11页
学生档案管理系统数据库设计与优化.doc_第3页
第3页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《学生档案管理系统数据库设计与优化.doc》由会员分享,可在线阅读,更多相关《学生档案管理系统数据库设计与优化.doc(11页珍藏版)》请在三一文库上搜索。

1、学生档案管理系统数据库设计与优化DOI:10.11907/rjdk.143542 作者简介:容湘萍(1982-),女,湖南邵阳人,硕士,惠州商贸旅游高级职业技术学校信息技术系讲师,研究方向为计算机应用。 0 引言 学生档案管理系统是结合目前中职学校学生管理流程和惠州商贸旅游高级职业技术学校的实际情况编制而成的,该系统将复杂、繁琐、易错的工作交由计算机完成,实现学生管理工作信息化,使各种学生管理工作在系统中完成,从而提高了工作效率和管理水平。数据库设计是信息系统开发和建设的重要组成部分,它把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能<sup>1</

2、sup>,使信息系统可以方便、及时、准确地从数据库中获得所需信息。因此只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统。 1 学生档案管理系统数据库设计 规范的设计法中较为著名的有新奥尔良方法,它将数据库设计分为4个阶段:需求分析、概念设计、逻辑设计、物理设计<sup>2</sup>。系统为了提高设计效率和应用性,采用新奥尔良法进行设计,将软件工程原理和方法应用到数据库设计中。 1.1 数据库需求分析 需求分析是数据库设计的第一阶段,该阶段的基础数据和数据流图是下一步设计概念结构的基础。学生档案管理系统业务流程可以简单归纳如下:首先是用

3、户登录系统,登录后系统将记录用户信息,并读取用户权限信息。用户可进入用户管理模块,在这里用户只有修改自己密码的权限,其它用户管理权限只有系统管理员才具有。用户可根据自己的权限执行相应的操作和模块管理。学生只具有查看自己基本信息的权利,不能作修改;班主任能查看本班学生信息,并能对本班学生的信息进行添加、修改、删除、输出打印,并能对学生评语进行管理;基本信息管理员可以对全校学生信息进行管理,实现分班,可以对学生的奖惩记录进行添加、修改、删除和维护,能进行学生学籍的变动管理,还可以对学生的助学金申请和发放进行管理;成绩管理员能对学生每学期的成绩进行添加、修改、删除和打印;招生管理员主要是在每学年开学

4、初向系统录入学生的原始数据。 1.2 数据库概念结构设计 在数据库技术中,用数据模型的概念来描述数据库的结构和意义,对现实世界进行抽象。概念数据模型通常是用实体-联系模型(即E-R模型)描述的。根据需求分析学生档案管理系统,可以得到本系统涉及的主要实体有:学生、班主任、管理员、成绩、助学金、奖励、处分等。其中,学生具有学生ID、学号、姓名、性别、民族、政治面貌、专业、班级、出生日期、身份证号、户口地址、籍贯等属性;班级具有班级ID、班级名称、班主任、专业、所属系部等属性;管理员具有用户ID、用户名、用户密码、用户权限等属性;成绩具有课程代码、课程名称、课程学分、学生成绩等属性;助学金具有学生学

5、号、身份证号、银行卡号等属性。 图1给出了学生与班级之间的E-R图,班级与学生之间是一对多的关系,一个学生只能对应一个班,一个班级可以有多名学生。 1.3 数据库逻辑结构设计 数据库逻辑结构设计的任务就是把概念结构设计阶段设计好的E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构<sup>3</sup>。几个有代表性的关系模型如下: (1)学生(学号、姓名、性别、民族、政治面貌、专业、班级、出生日期、身份证号、户口地址、籍贯、学生电话、家庭地址、邮编、家长情况、照片)。 (2)班级(班级ID、班级名称、班主任、入学时间、学制、总人数、男生、女生、专业

6、、所属系部)。 (3)学生处分(处分类别、学号、姓名、系部、班级、学年、处分时间、处分原因、处分文号、撤销文号、撤销时间、备注)。 (4)学生表彰(学号、班级、姓名、获奖类别、获奖时间、获奖原因、系部)。 (5)学生助学金(学号、资助项目、姓名、班级、身份证号、农村户籍标志、城市低保标志、银行卡号、资助时间)。 (6)学生成绩(学号、课程代码、课程名称、课程类别、课程学分、课程教学班级、学生成绩、修课学年、修课学期)。 (7)品德评语(学号、姓名、班主任、评语内容、学期)。 图1 学生与班级之间的E-R图 1.4 数据库结构创建 根据数据库需求分析、数据库概念结构和数据库逻辑结构,设计了名称为

7、Student的数据库。数据库由多个表组成,比较重要的表有学籍信息表、学生注册信息表、用户信息管理表、学生助学金信息表、学生成绩信息表、学生奖惩信息表等。表1展示的是学生助学金信息。因涉及的数据表较多,在此不一一罗列。 表1 助学金信息 序号字段名称数据类型说明 1DpartmentChar(16)系部 2ClassChar(11)班级 3StuIdChar(12)学号 4StuNameVarchar(10)姓名 5Certificate_idVarchar(18)身份证号 6ZizhuTypeChar(10)资助类别 7ZizhuTimeDatetime(8)资助时间 8BankNumber

8、Varchar(20)银行卡号 9NongcunChar(2)农村户口标识 10DibaoChar(2)城镇低保标识 2 数据库性能优化 数据库性能的好坏直接影响到整个系统的性能。所以应尽量优化数据库性能,以提高系统的性能<sup>4</sup>。 2.1 数据库存储过程优化 数据库的存储过程是存储在服务器上的例行程序及过程。SQL Server中有许多管理是通过存储过程来完成。因为存储过程是预编译的SQL语句,所以其执行速度比标准的SQL语句快得多<sup>5</sup>。当执行存储过程时,该存储过程是在SQL Server上运行,而不是在客户

9、端发送请求,这样可大大提高整个学生档案管理系统的执行速度。为了获取最佳性能并提高数据库的安全性能,该系统使用了大量高效简洁的存储过程,主要存储过程包括UserLogin用户登录、AddUser添加用户、UserQX设置用户权限、AddSpecial添加专业、AddStudent添加学生信息、AddZXJ添加助学金信息等。SQL Server优化存储过程的方法有很多种,本系统采用的方法如下: (1)使用Set Nocount on。虽然使用了存储过程,但仍然会在客户和服务器之间引发一些数据传输。在每条SQL语句的结尾,SQL Server发送一个响应给客户,指明由该条语句影响的行数,这些信息需要

10、占据一定的网络带宽。在存储过程逻辑完美的前提下,可以通过执行Set Nocount on连接命令关闭这些消息,这样就不必将结果返回给客户以应用条件逻辑,所有工作都在服务器上完成<sup>6</sup>。也即使用了Set Novount on后,除了返回数据集外不会返回额外信息,可以减少网络流量。 (2)使用确定的Schema。使用表、存储过程等,加上确定的Schema,可以使SQL Server直接找到目标,避免去计划缓存中搜索<sup>7</sup>。搜索会导致编译锁定,影响性能。如selet * from dbo.Student 比 sele

11、ct * from Student要好。后者会在当前的Schema下搜索,如果没有,再到dbo下搜索,而前者可以直接找到dbo.Student,没有找到会直接报“找不到”的出错提示。 (3)自定义的存储过程不要以sp_开头。存储过程分为系统存储过程和用户自定义的存储过程。以sp_开头的存储过程默认为系统存储过程,如果自定义的存储过程以sp_开头,会首先去master库中寻找,然后再到当前数据库中找,这样就增加了查找的时间<sup>8</sup>。 2.2 索引优化 在数据库中检索记录时,如果能够利用适当的索引对记录进行排序,就会提高检索的效率<sup>9&l

12、t;/sup>,所以为了提高系统性能,应对索引进行相应的优化。常用优化方法有: (1)选取合适的字段建立索引。只有当经常查询索引字段中的数据时,才需要在表上创建索引。如果应用程序非常频繁地更新数据,或者磁盘空间有限,对索引的数量就要有所限制。对索引字段的选择是基于表的设计和对表实施的查询来决定。在创建索引之前,一定要确认索引字段是作为查询数据的一部分放置在该表中。在创建索引时还需要注意,对表中包含该字段数据的记录较少、数据值较大、字段较长及与查询无关的一些字段等不适合作为索引<sup>10</sup>。如学生学籍信息表中的身份证号和家庭地址等信息就不适合建立索引。

13、一般也不要为小型数据表设置过多的索引,如果经常有插入和删除操作就更不要设置索引。 (2)使用索引优化器。在大多数情况下,借助SQL Server查询优化器可以选择最有效的索引。查询优化器可分析索引的许多不同方面,以决定它的潜在效率。选择良好的索引将缩短分析时间。但查询优化器的任务只有在当索引能够提高性能时才选择索引提取,当索引会对性能产生负面影响时,应避免使用索引提取<sup>11</sup>。在查询分析阶段,查询优化器查看查询的每个阶段并决定需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化,并且可以利用索引快速获得所需数据。

14、 2.3 查询优化 查询操作在各种数据库操作中所占比重最大,查询效率是数据库系统的重要性能指标。查询操作基于Select语句在SQL中是代价最大的语句。如果采用更好的查询策略,可以使查询时间大大减少,如何设计高效合理的查询语句就显得非常重要<sup>12</sup>。对于同一查询语句,采用的表达形式不同,其查询效率也极大不同,因此基于SQL查询语句的查询优化方法有: (1)合理使用查询条件,避免对数据表的顺序读取。表的顺序读取是导致系统性能直线下降的原因。可以借助前面讲到的索引进行优化。例如两个表:学生表(学号、姓名、性别)和选课表(学号、课程号、成绩)。如果两个表要做

15、连接,就要在“学号”这个连接字段上建立索引。 另外,在查询条件中,要避免使用Not操作符,因为这种操作也能导致对表的顺序读取,从而使查询速度减慢。 (2)使用多个条件对同一表进行查询时,条件强的放在前面,条件弱的放在后面,在执行过程中将不满足的行迅速删除,这样临时表格的行数大大减少,从而提高查询速度<sup>13</sup>。 (3)对多个表进行查询时,将返回结果集行数较多的表放在前面。对多个表进行查询操作时,表的次序也影响查询的响应速度。对多个表进行条件查询时,使用相关子查询。联结运算是数据库查询中的常用运算,会产生一个很大的临时表,不优化的SQL查询语句会产生巨大的

16、计算量,且增加对内存的需求。该学生档案管理系统中,表STU_Score中保存了学生的成绩信息,若想得到学生的学习成绩,可以用如下查询语句: SELECT * FROM STU_Score WHERE stuid=(SELECT stuid FROM STU_Xueji where term=2013第一学期); 在该语句中,先对学生学籍信息表格STU_Xueji进行选择运算,立刻便删除了大量多余数据,得到一个临时表,再对该表格与学生成绩表Stu_Score进行联结运算,从而得到最终结构,这样可以大大减少计算量,提高数据库的性能。 (4)减少嵌套查询。嵌套层数每增加一层,查询效率便呈几何级降低。一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,则要在子查询中过滤掉尽可能多的行<sup>14</sup>。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1