第36卷  第5期 福  建  电  脑 Vol. 36  No.5
2020年5月
Journal of Fujian Computer
May 2020
———————————————
曾棕根,男,1975年生,硕士,副教授,主要研究领域为软件工程。E-mail:****************。
Moodle 平台SQL 在线评测系统的实现
曾棕根
(宁波职业技术学院电子信息工程学院 浙江 宁波 315800)
摘  要 SQL 编程训练是《数据库原理及应用》相关课程的教学核心部分,如何现场检验学生的SQL 编程能力和自动评价学生的SQL 编程作业,是该课程教学的最大痛点。本文应用Git 中心和Docker 中心提供的免费开源组件,在Moodle 网络课程平台中,使用CodeRunner 插件和Jobe 后端评测系统,在极短的
时间内,快速构建自己的SQL 在线评测系统。一个学期以来,该系统快速稳定可靠,取得了非常好的应用效果。
关键词 Moodle ;SQL ;自动评测;源代码;Docker ;Jobe ;CodeRunner 中图法分类号 TP393  DOI:10.16707/jki.fjpc.2020.05.030
在线代码运行器Realization of SQL Online Evaluation System Based on Moodle
ZENG Zonggen
(School of Electronic Information Engineering, Ningbo Polytechnic, Ningbo, China, 315800)
1 引言
《数据库原理及应用》是计算机及其相关专业的基础核心课程之一,批改学生提交的SQL 编程作业和考试题历来是一项非常耗时耗力的艰巨工作。如何能像C 、C++、Pascal 、Java 、Python 、PHP 、NoteJS 等其它编程语言一样,做到机器在线自动批改,是广大数据库任课老师一直以来的期盼。
本文采用LNMP + Moodle + CodeRunner + Docker + Jobe 免费开源架构,轻松实现SQL 编程的在线评测的快速构建,并经过实际教学应用,改善了数据库传统教学模式。
2 SQL 在线评测原理
SQL 在线评测的采用黑盒测试原理[1],在同一个数据库的同样的表和相同的记录中,执行学生提交的SQL 语句。如果输出结果与题目设定的输出数
据完全相同,那么这些SQL 语句判定为正确答案。
比如,给定一个表info ,要求输出成绩小于60的所有记录。题目中给出的是表的结构和几个字段样例,如表1所示。
表1  info 表
uid idnumber name score 1 201901 Rose 87 2 201902 Jack 58 3
201903
Tom
46.5
那么,学生给出的答案至少可以出现以下几种:
select * from info where score<60;
select * from info where score>=0 and score<60; select uid,idnumber,name,score from info where score<60。
上述答案,提交给数据库系统去运行,通过字符串比较输出结果与评测系统中设定的结果。如果与文本内容完全相同,系统就认为学生编写的SQL 语句是正确的。
3 SQL 在线评测系统实现
实现一套SQL 在线评测系统,难点在于:老师在出题时,必须先在服务器上创建特定的数据库、表和记录;另外,开发一套独立的评测系统,工作量太大。