Смекни!
smekni.com

Практические навыки и дистанционное обучение (стр. 1 из 2)

Моисеенко С.И., Майстренко А.В.

Донской Государственный Технический Университет

Современные информационные технологии сделали получение образования доступным вне стен учебных заведений или, по крайней мере, создали предпосылки для этого. В Интернет можно найти курсы лекций и другие учебные материалы по разным областям знаний. Также нет недостатка в системах тестирования, позволяющих в той или иной мере оценить уровень полученных знаний. Однако ни одна система тестирования, на наш взгляд, не сможет оценить степень умения или, если хотите, мастерства. А ведь это то, что требуется от специалиста практически в любой области. Разве можно заранее сказать, что человек, сдавший тест по языку программирования, умеет писать "хорошие" программы. Основной недостаток дистанционного обучения, как нам представляется, заключается в отсутствии аналогов того, чем в классическом обучении являются практические или лабораторные занятия, на которых и приобретаются навыки практической работы. При отсутствии общего подхода к построению обучающих систем такого рода, авторами сделана попытка восполнить этот пробел дистанционного обучения в частной области, а именно, в области изучения языка SQL.

Популярность реляционной модели привела к тому, что к настоящему времени реляционные СУБД доминируют на рынке программного обеспечения обработки данных. Более того, многие нереляционные системы оснащаются реляционным пользовательским интерфейсом. В то же время стандартным интерфейсом взаимодействия с реляционными базами данных является язык SQL, которому, по большому счету, нет альтернативы. Это обусловлено как наличием стандарта (недавно появилась последняя версия этого стандарта, известная как SQL3), так и дальнейшим развитием этого языка в направлении поддержки распределенной обработки и объектно-ориентированных баз данных.

Эти соображения явились мотивацией для создания интерактивной обучающей системы языку SQL, где основной упор был сделан на активном изучении посредством выполнения упражнений.

Первая реализация этого информационного ресурса (http://sql.ipps.ru) посвящена оператору выборки данных SELECT, являющемуся наиболее сложным и часто используемым оператором языка SQL. В дальнейшем планируется добавить другие операторы манипуляции данными, а также операторы описания схемы данных.

Рис. 1. Интерфейс системы дистанционного обучения языку SQL (http://sql.ipps.ru/exercises.php).

Схема взаимодействия пользователя с системой сводится к следующему. Для каждого упражнения приводится описание базы данных и на естественном языке (русском или английском, по выбору пользователя) формулируется задание на выборку. Пользователь должен написать оператор SELECT, реализующий выборку требуемых данных. Проверка запроса пользователя осуществляется, если нажать кнопку "Выполнить" (рис.1). Если запрос синтаксически правилен, но сформулирован неверно логически, будут возвращены данные запроса пользователя и данные правильного запроса. Одни только правильные данные можно получить, если нажать кнопку "Показать правильный результат". Кроме того, если установить флажок "Без проверки", можно писать любые запросы на получение данных из учебной базы данных; при этом проверка запроса пользователя не выполняется.

Задания имеют разный уровень сложности, что, по мнению авторов, делает сайт полезным не только новичкам, но и опытным разработчикам приложений баз данных и администраторам СУБД. На сегодняшний день на сайте представлено порядка 70 упражнений, большая часть которых заимствована из книги известного специалиста в области баз данных Дж. Ульмана [Джеффри Д.Ульман, Дженнифер Уидом., 2000].

В качестве примера рассмотрим одно из простых заданий (стоимость вопроса 1 балл) для базы данных "Компьютерная фирма", схема которой показана на рис. 2.

Рис. 2. Схема данных учебной БД "Компьютерная фирма".

Задание звучит так: "Найдите всех производителей принтеров; вывести: Maker". Правильным решением может быть такой запрос:

SELECT DISTINCT Maker FROM Products WHERE type='printer'

Пусть результатом выполнения данного запроса является следующая одностолбцовая таблица:

Maker
HP
Epson
Canon

Заметим, что такие же строки будут возвращены, если мы сформулируем запрос иначе:

SELECT DISTINCT Maker FROM Product WHERE Maker In ('HP','Epson','Canon'),

что, естественно, является неправильным выполнением задания.

Оба запроса возвращают одинаковые данные, однако, если мы добавим в таблицу Products запись с еще одним производителем принтеров, то, очевидно, что первый запрос будет по-прежнему давать правильный результат, а последний - нет. Такие синтаксически верные, но логически не отвечающие условию упражнения запросы, оцениваются системой как неправильные.

Для отслеживания таких ошибок в системе "Упражнения по SQL" используется контрольная БД, имеющая такую же логическую схему, как и доступная пользователю БД, но содержащая другой набор данных. Система признает запрос правильным, если результаты проверки на двух базах данных совпадут с данными, возвращаемыми "эталонным" запросом. Следует отметить, что мы не можем здесь сравнивать саму синтаксическую конструкцию запроса, поскольку запрос на получение одних и тех же данных на языке SQL можно сформулировать разными способами, что свидетельствует о гибкости данного языка и облегчает работу пользователя.

Система реализована в трехуровневой архитектуре клиент-сервер. На промежуточном уровне роль сервера приложения выполняет Web-сервер (в нашем случае IIS), который посредством интерпретатора PHP взаимодействует с сервером баз данных (MS SQL Server). Клиентом, естественно, является браузер.

Рассмотрим несколько подробнее серверную часть системы. Мы используем три базы данных: Exercises, Alt_Exercises и Main (Рис. 3).

Рис. 3. Базы данных обучающей системы.

При этом каждая из баз данных Exercises и Alt_Exercises содержит все учебные БД, на которых выполняются упражнения (пример одной из таких баз представлен на рис. 2). Как было отмечено ранее, Alt_Exercises содержит контрольные данные и имеет такую же структуру, как и Exercises.

В БД Main (Рис.4) хранится служебная закрытая от пользователя информация. Таблица Users содержит сведения о пользователях. Правильные ответы записываются в таблицу Results. Благодаря этому можно выяснить рейтинг каждого из зарегистрировавшихся пользователей. Ответы гостей системой не сохраняются.

Рис.4 Схема данных БД Main.

В таблице Databases содержится описание учебной базы данных, а в таблице Tasks - информация об упражнениях: текст задания, скрипт эталонного ответа на него и стоимость (сложность) вопроса.

Наибольший интерес представляет способ проверки правильности решения упражнения. Поскольку пользователь может решить упражнение разными способами, то была реализована идея сравнения не самих запросов, а результирующих наборов данных [Моисеенко С.И., Майстренко А.В., 2002]. В результате чего существенную роль приобретает используемая СУБД. Теперь она используется не только для хранения служебной информации, но и фактически выполняет запросы пользователя. Алгоритм сравнения набора данных, возвращаемого запросом пользователя, с набором данных эталонного запроса базируется на одинаковом упорядочении столбцов и одинаковой сортировке строк в этих двух наборах данных. Результирующие наборы совпадают, еслисодержат, во-первых, одинаковое число столбцов и строк и, во-вторых, одинаковые значения в каждой соответствующей ячейке таблиц, т.е. задача сводится к сравнению на равенство двух двумерных массивов при очевидном преобразовании типов.

Как упоминалось выше, попытки "обмануть систему" простым перечислением данных из правильного результата блокируется сравнением запроса пользователя на независимых данных, недоступных для просмотра. Разумеется, все же остается вероятность того, что логически неправильный запрос вернет "правильные данные", однако, тестирование системы показало, что эта вероятность весьма мала и зависит от того, насколько тщательно подобраны данные в контрольной базе данных Alt_Exercises. Кстати говоря, эту вероятность можно еще уменьшить, используя несколько контрольных баз данных. Так или иначе, окончательный ответ сможет дать только эксплуатация системы, к чему мы и призываем всех интересующихся как дистанционным обучением, так и базами данных.

Следует сказать несколько слов об используемом диалекте SQL. Поскольку запрос пользователя выполняется применяемой в системе СУБД, исключительную важность приобретает то, насколько диалект SQL этой СУБД соответствует стандарту языка SQL. Дело в том, что мы ставили себе задачу обучения SQL как универсальному средству взаимодействия с базами данных, а не работе с конкретной СУБД. По этой причине мы отказались от использования свободно распространяемых СУБД типа MySQL, которая на момент реализации обучающей системы не поддерживала, например, подзапросов в операторе SELECT. Сейчас мы применяем MS SQL Server 2000, диалект языка SQL, которого весьма близок к стандарту SQL-92. Именно следование этому стандарту было выдержано при написании справки по использованию оператора SELECT, которой можно воспользоваться при решении упражнений на сайте.

Хотелось бы отметить высокую степень мотивации, обусловленную использованием рейтинговой системы представления показанных пользователями результатов (см. таблицу 1). Зарегистрированный в системе "Упражнения по SQL" пользователь автоматически участвует в рейтинге. В зависимости от сложности задания, посетитель получает от 1 до 3 баллов за правильное решение. На первом этапе тестирования посетителям сайта доступны 62 упражнения, которые можно решать в любом порядке. Здесь есть как простые упражнения, так и сложные. Более высокое место занимает тот, кто набрал большую сумму баллов, даваемых за правильное решение упражнений. При равенстве этих показателей выше будет тот, кто затратил меньше времени на решение, которое оценивается как интервал между временем решения первого и последнего упражнений.