王鑫 刘宝林 张钢 戴维迪
文章编号:1672-5913(2015)11-0054-04
中图分类号:G642
摘要:针对数据库原理课程实验教学中使用商业数据库产品作为实验环境带来的问题,分析数据库原理课程的传统实验教学模式,构建基于开源软件的数据库原理实验教学环境,介绍开源软件的选取原则,阐述基于C/S架构的单机实验环境和基于B/S架构的Web实验环境的搭建方法,并给出基于开源软件的实验教学方案。
关键词:数据库原理;实验教学;开源软件;实验环境
0 引 言
数据库原理是计算机及相关专业的核心基础课程。随着大数据时代的到来,数据库原理课程对于学生掌握数据理论和技术的重要作用更加凸显。同时,数据库是一个理论和实践并重的知识领域。数据库理论方法需要在数据库管理系统(DBMS)中加以验证,才能使学生加深对数据库原理的理解。在国内,计算机及相关本科专业数据库原理课程的实验环节一般使用某个商业数据库产品(如Oracle、SQL Server、DB2等)作为实验教学的软件环境。此做法主要存在两方面的问题:①学生易被商业数据库产品提供的繁杂功能分散注意力,花费大量时间进行用户界面学习和文档查阅,而非数据库原理本身的实验验证;②学生无法从内部架构和源代码层面理解数据库理论方法背后的实现机制,不利于与本科生高年级或研究生的数据库实现技术课程进行衔接。
1 数据库原理课程传统实验教学模式
多年来,大多数本科数据库原理课程教学存在一个误区,即让学生掌握数据库基本理论的同时,掌握一个商业数据库产品的操作方法。形成这种认识的原因是学生在学习完数据库原理课程之后,应能胜任某商业数据库产品的数据库管理员(DBA)职位。然而实际情况是,以Oracle、SQL Server和DB2这三大数据库为代表的商业产品,为适应市场需求,功能和界面频繁更新且呈现复杂化趋势,难以通过相对简单的操作验证数据库原理知识点,相反会增加学生的学习负担;即使能够展示某些效果,由于产品的商业封闭性,也无法从内部结构和源代码级别说明实现机理,例如关系表的存储、索引的建立、SQL查询的执行等。不使用商业数据库的另一个原因是,作为一门本科课程应保持理论和实践教学的中立性,没有理由选择一种产品作为实验环境而不选择另一种。至于培养DBA,实际上并不应在本科数据库原理课程的教学目标之中。从国际一流计算机专业的课程设置来看,本科数据库原理课程一方面使学生掌握数据库系统及DBMS内部的基本原理和技术,另一方面为研究生阶段的高级数据库系统课程打基础。学生要想胜任某商业数据库产品DBA,可在学习完数据库原理之后,通过其他途径达到。
与操作系统原理和编译原理相比,数据库原理课程教学在开源软件的使用上可谓相对滞后。操作系统原理教学中对Linux内核源代码的分析和实验早已在国内外高质量课程中普遍开展;应用开源编译器及编译工具的源代码进行编译原理的实验验证也已是精品编译原理课程的普遍共识。不过,在数据库原理教学中,国际上只发现CMU和Berkeley的数据库课程采用开源的PostgreSQL作为期末大作业的DBMS;调查国内数据库相关课程,尚未发现使用一整套开源软件构建数据库原理实验教学环境的案例。
经过两年的实验教学改革探索,我们成功地构建起以MariaDB、HeidiSQL和phpMyAdmin等开源软件为基础的数据库原理课程实验教学环境,同时编写了基于开源软件的实验指导教程,在基于开源软件的数据库原理课程实验教学改革方面积累了一些经验。
2 基于开源软件的实验教学环境
借鉴国际一流数据库课程的先进经验,我们对天津大学计算机科学与技术专业的本科数据库原理课程实验教学环节进行了改革,探索以MariaDB、HeidiSQL和phpMyAdmin等开源软件取代商业产品,搭建数据库原理课程实验教学环境,并编写基于开源软件的实验指导教程;在2013年和2014年两届课程的实验教学中进行该项改革尝试,通过调查问卷发现超过90%的学生认为基于开源软件的实验环境对于掌握数据库原理优于商业产品,超过80%的学生认为进行基于开源软件的数据库原理实验后,可以较容易地通过自学完成某种商业数据库的基本操作。
2.1 开源软件的选取
对于数据库原理课程的实验教学,最重要的是选取一个适合理论验证又兼顾业界应用广度的DBMS。前期我们调研了两种主流开源数据库PostgreSQL和MySQL,PostgreSQL虽然历史悠久、功能强大,但其在安装和使用的简便性上远不如MySQL,且PostgreSQL在Web开发的使用流行度也远不及MySQL。据调查,包括国际著名互联网公司Google、Facebook、Twitter和国内互联网巨头百度、腾讯、阿里巴巴在内的各大企业都在不同的产品中大量使用MySQL作为数据库后台。不过,我们没有直接选用MySQL,而是选用了目前与MySQL完全兼容的开源数据库MariaDB,原因有两方面:一是MariaDB在多项性能上超越了MySQL;二是MySQL被Oracle公司收购后未来有被闭源的风险,而MariaDB是由MySQL原班人马开发的,保证其开源性。
DBMS确定后,我们选取了两种开源客户端软件:一种是Windows下C/S架构的图形用户界面(GUI)客户端HeidiSQL;另一种是B/S架构的Web界面客户端phpMyAdmin。选用这两种客户端软件的目的是使学生从实验环节中加深对DBMS的数据库服务器属性的认识。实验环境配置说明、实验步骤说明和实验报告提交均采用基于开源软件Moodle的e-learning教学平台完成。图1展示了基于开源软件的数据库原理实验教学环境的架构图。
2.2基于C/S架构的单机实验环境
基于C/S架构的单机实验环境适合学生在个人计算机上实验,也适合教师演示操作。首先安装MariaDB,安装过程中可以改变默认安装路径,设置root用户密码,选择使用UTF-8作为默认字符集以保存中文数据;可以修改安装的Windows服务默认名称MySQL以及默认TCP端口号3306(为了兼容MySQL)。另一种安装方式是使用zip压缩包文件,解压后执行其中的命令行工具mysql_install_db.exe进行MariaDB安装。
单机实验环境采用Windows下的开源GUI客户端HeidiSQL,其安装简单,不需要特别设置。在HeidiSQL的会话管理器界面中输入连接MariaDB数据库服务器所需的全部信息,包括网络类型为MySQL(TCP/IP),主机名/IP为127.0.0.1,填写root用户及其密码,端口为3306。成功地连接到MariaDB数据库服务器后,在HeidiSQL中执行SQL语句及返回查询结果的界面如图2所示。需要强调的是,在会话管理器界面中可将“主机名/IP”改为想要连接的数据库服务器的主机名或IP地址,以实现远程连接MariaDB数据库,使学生认识数据库的C/S架构。
2.3 基于B/S架构的Web实验环境
基于B/S架构的Web实验环境适合学生通过网络远程进行数据库实验操作或进行集中的上机实验考核。环境的搭建首先需要设立一台专门用于实验教学的性能较好的物理服务器,安装MariaDB和phpMyAdmin,使phpMyAdmin可以管理MariaDB实例。在整个课程开始前,教师先为每名学生建立一个用户和一个数据库,并为该用户指定远程访问、操作该数据库的权限。例如,下列代码创建了一个以学号“3012216001”为用户名的用户,指定其密码为123456;创建了名为“db3012216001”的数据库,并将该数据库上的ALTER、CREATE、DELETE、DROP、INSERT、SELECT等操作权限授予该用户。我们编写程序读取一届学生的学号列表,对每名学生自动生成如下SQL脚本,进行用户和数据库的批量创建和授权操作。
学生以自己的用户名和密码登录phpMyA-dmin,只能访问并操作自己专用的数据库。高性能的数据库服务器完全有能力支持学生的并发操作,每名学生独立地使用各自的数据库进行实验,DBMS的隔离性恰好保证了多名学生同时操作互不影响。图3展示了学号为“3012216001”的学生登录phpMyAdmin后, 在数据库“db3012216001”中执行SQL语句的效果。
Web实验环境还为实验教学管理工作带来了两个方面的提升:一是教师可以通过phpMyAdmin自带的工具查看每名学生数据库的日志,从而客观真实地分析每名学生课下进行实验练习的工作量;二是教师可以在该环境下组织上机实验测试,并将日志记录的数据库操作及数据库中的对象作为测试结果的准确评价依据。
3 基于开源软件的实验教学方案
天津大学计算机科学与技术专业数据库原理课程为64学时,其中授课为40学时,实验为24学时。考虑到数据库原理课程理论性紧密结合实践性的特点,给学生布置的验证性实验和综合实验需要中等水平的学生再利用课下大约60学时的时间完成。
3.1 数据库原理的验证性实验
验证性实验应紧密结合课上讲解的理论和方法。表1列出了8次验证性实验的名称及课上、课下学时分配以及所验证的理论知识点。实验安排做到了覆盖全部课上讲解的可实践验证的理论知识点,并突出重点和难点内容。我们编写了实验指导教程,每个实验都有实验目的、实验原理和实验步骤。结合实验内容的难易程度,部分实验步骤还给出启发式示例。
3.2 以项目为主线的综合实验
综合实验属于期末大作业性质,课上布置和辅导8学时,中等水平学生估计课下需要约30学时完成。该实验以一个软件项目的数据库设计为背景,提供经整理的用户需求文字性描述,例如,网上商城、图书管理、员工管理等系统的后台数据库设计需求。
实验步骤包括:
(I)首先要求画出数据库的E/R模型图。
(2)将E/R模型转换为关系模型,写出创建关系表的CREATE TABLE语句,这里要求用CONSTRAINT关键字建立有名称的主键和外键约束,并规定主键名称格式为“pk_表名”,外键名称格式为“fk本表名 引用表名”。
(3)将提供的示例数据导入已创建的表中,其中部分表提供行数为百万级别的大规模数据,以增加实验的挑战性,同时可以验证索引的效果,让学生自学如何使用MariaDB提供的批量导人数据语句LOAD DATArNFILE。
(4)编写SQL语句完成查询操作,包括单表查询(大规模表的前k行,自学LIMIT关键字用法)、复合条件、聚合函数、分组、排序、自然连接、连接(旧式语法、新式JOIN…ON语法)、子查询(不相关、相关)和集合操作等。
(5)编写SQL语句完成更新操作,包括添加、修改和删除。
(6)高级主题,包括触发器实验(实现自动审计日志)、基于已有表建立视图、索引的作用(在大规模表上建立索引大幅提高查询执行效率)、索引与键(主键上自动建立索引)、建立存储过程(函数、分支、循环、游标)、JDBC编程等。
(7)撰写不少于500字的实验总结,记录实验中遇到的问题及解决方法、经验和收获等。
该综合实验既有对验证性实验中知识点的巩固性重复,又有需要学生进行自学和探索的综合性、挑战性内容,达到了综合实验的设计目标。
4 结语
通过在数据库原理实验教学中引入基于开源软件的实验环境,充分发挥开源软件的优势,利用C/S架构单机实验环境和B/S架构Web实验环境相结合的方法,我们设计数据库原理验证性实验教学方案和以项目为主线的综合性实验教学方案,切实提高了数据库原理课程的实验教学效果。