数据库课程中索引原理的实验教学设计
2017-10-26王玉善郑晓妹
王玉善 郑晓妹
摘要:该文针对本科数据库原理课程中索引问题的教学现状,分析实际教学中面临的困难,设计实验数据环境,依照理论课教学知识点设计对应的实验内容,增强学生感性认识,实践中透彻理解索引的深刻内涵。
关键词:数据库;索引;数据环境;实验设计;高校
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)22-0151-02
1引论
数据库原理课程中索引部分的教学一直是高校本科教学中的难点。一般而言,内容涉及索引的基本概念、分類、原理和适用场合等知识点,内容大多泛泛而谈。若增加理论课的教学深度,内容上能够讲授清楚,但学生会感觉深奥抽象,依旧难以真正理解其应用的目的和内涵,无法在实际场景中根据不同需求创建合适的索引,真正提升查询的效率。
2面临的困难
造成如此教学现状的根本原因是实践环节缺乏合适的数据环境。众所周知,只要数据表的实际存储量足够大时才有必要建立索引,从而对比分析引入索引的效果,体会索引的各种适用场合。而这个数据量足够大的数据环境如何创建,又如何按照特定需求即时创建几万,几十万,几百万甚至千万上亿行的数据表,成为困扰教学的障碍。正因为如此,目前数据库教材索引部分的实验设计也多以按照指定要求创建索引并删除索引等基本命令的练习为主,至于为什么创建这个索引,建立后对实际查询时间的影响到底是多少,学生无从知晓。这样的实验环节根本没有达到理论教学需要体会的深度,导致理论课虚无缥缈,不接地气。
3实验数据环境的创建
要解决索引教学面临的困难,设计一个合适的数据环境势在必行。该数据环境需具备以下两点:
(1)对应的数据需求最好简单,便于理解,使得学生可以将精力放在研究索引和执行效率上。
(2)表中插入数据行的数量级可以按需自行调整。
现以SQL Server 2008为例,给出创建两张表S和SC并插入数据的脚本。
CREATE TABLE S
(Sno char(10)CONSTRAINT PK_S PRIMARY KEY,
Sname char(10),
Ssex char(2),
Sage tinyint,
ClassNo char(10)
)
GO
CREATE TABLE SC
(ID int IDENTITY(1,1)CONSTRAINT PK_SC PRIMARYKEY,
Sno char(10),
Cno char(10),
Grade int
)
GO
一向S表中插人测试数据
DECLARE @i int,@Sno char(10),@Sname char(10)
DECLARE @Ssex char(2),@Sage char(2),@ClassNo char(10)
SELECT@i=1
表S插入数据的行数由局部变量i的值决定;表Sc插入数据的行数是@i*@j,由局部变量i和j的值决定。学生可以根据需要随时调整数据表的插人数据量。
4索引原理的实验设计
创建好所需的实验数据环境,教师就可以按照理论教学的第13卷第22期(2017年8月)不同深度,针对各个知识点分别设计对应的实验内容,理论与实践紧密结合,理论课的每个点真正落地,透彻理解索引的内涵。现以索引理论教学中最基本的概念为例给出对应的实验设计:
(1)理解索引的作用。
在S表的Sname列上创建不唯一非聚集索引,然后查询指定学生姓名的基本信息,从10读取、执行时间、执行计划等方面对比建立索引前后的区别,体会索引的作用。
(2)理解索引的适用场合。
在s表的Ssex列上创建不唯一非聚集索引,然后查询指定性别的学生基本信息,从10读取、执行时间、执行计划等方面对比建立索引前后的区别。最后对比分析姓名列和性别列上创建索引前后的执行情况,删除不必要的索引。
(3)帮助学生理解创建复合索引的注意事项。
分别在SC表(Sno,Cno)列和(cn,Sno)列上创建复合索引,执行语句SELECT * FROM sC WHERE Sno=~20000AND Cno=c10,查看并记录10统计信息、执行时间和图形化执行计划,体会复合索引中属性列的不同顺序对执行计划和执行时间的影响。
另外,在该数据环境下还可以设计实验帮助学生理解查询优化,体会使用不同查询语句实现同一查询要求时执行计划的区别,深入理解查询优化问题。
5结束语
创建数据环境,实验中摆脱传统的学习索引相关命令,而是将理论中的各知识点纳入实验设计中逐一体会理解,使得理论课内容顺利着陆,增强学生感性认识,在实践中透彻理解索引的深刻内涵,有效提升了学生的理解深度,提高了解决实际问题的能力。endprint