Дипломная работа: Исследование использования программ дистанционного обучения для подготовки учебно-методической документации
Рисунок 1.1 -
Схема организации системы дистанционного обучения
Так как
данная система ДО будет доступна для широкого круга людей через Интернет, все
данные по курсам и тестированию будут храниться в базе данных, реализованной
средствами популярного интернет-серверы баз данных MySQL.
Это позволит более надежно хранить всю информацию, следить за
работоспособностью сервера, на котором будет функционировать данная система и
оперативно следить преподавателю за текущей успеваемостью всех "дистанционных"
студентов.
Вся система
построена не из одного компьютера, а из многих, что подразумевает под собой
обработку информации в различных местах, как интрасети нашего института так и
глобальной сети Интернет. За основную СУБД была выбрана система которая
является одной из самых популярных систем, используемых в Интернет. Ее
несомненные достоинства быстрота и эффективность. В связке с эффективностью
языка web-скриптов PHP - получается мощное средство разработки, удовлетворяющее
всем требованиям системы дистанционного обучения.
Основываясь
на результатах исследования систем дистанционного обучения, преимуществ и
недостатков технологий ДО, проблем ДО (в частности проблем организации системы
контроля знаний), методов решения этих проблем и возможностей готовых программ
ДО можно сформулировать задачу, а также основные и дополнительные требования к
программному продукту.
Необходимо
разработать систему, функционирующую в качестве web-приложения.
Приложение должно быть написано на языке web-программирования
PHP 4. Его взаимодействие с базой данных MySQL организовано средствами web-сервера
Apache. Приложение предполагает обучение и тестирование
студентов с использованием дистанционных методов, интерактивное общение
студентов и преподавателей, а также представление различной информации для
студентов, относящейся к кафедре ВТИТ. Необходимо обеспечить возможность
получения доступа к web-сайту с любого клиентского
компьютера с установленным Интернет-браузером без необходимости установки
дополнительного программного обеспечения (ПО).
Простой,
удобный в навигации, интуитивно понятный студенту web-интерфейс,
основанный на системе подменю;
Разграничение
пользовательской и административной части программного комплекса;
Необходимо
обеспечить возможность однократной регистрации студентов-пользователей в
системе. Должна быть создана база данных студентов института, имеющих
возможность дистанционного обучения. При регистрации требуется сверка шифра с
этой базой данных. При несоответствии какого-либо параметра или повторной
попытке регистрации выводится ошибка;
Зарегистрированный
пользователь должен иметь возможность беспрепятственного входа в систему с
использованием индивидуальных уникальных логина и пароля. При входе в систему
он получает доступ к личной странице обучения;
Обучение по
каждой отдельной дисциплине (курсу) происходит индивидуально. Количество
одновременно изучаемых дисциплин ограничено (в данной работе по умолчанию это
количество равно трем). Если студент полностью прошел обучение по отдельной
дисциплине или "завалил" контрольный тест, он получает возможность
регистрации другой;
Система
должна обеспечивать изучение учебных материалов поэтапно и возможность
промежуточного контроля студента. Итоговый контроль полученных знаний должен
осуществляться очно при личном контакте студента и преподавателя;
Учебные
материалы каждого курса должны быть заранее подготовлены, разбиты на несколько
частей, для обеспечения последовательного поэтапного доступа к ним и выложены
для доступа зарегистрированным пользователям на сервере;
Необходимо
ограничить число возможных попыток прохождения каждого теста. Для сдачи теста
студент предпринимает до трех попыток. При несдаче какого-либо теста, курс
(дисциплина) считается не сданной. Результаты тестирования хранятся в базе
данных на сервере;
Все личные
параметры студентов, в том числе названия изучаемых дисциплин, текущий этап
изучения каждой дисциплины, результаты прохождения тестов, а также данные для
тестирования находятся на web-сервере. Права доступа на
изменение данных, удаление и просмотр есть только у администратора;
Все скрипты
программы тестирования находятся и выполняются на web-сервере
и доступ к ним ограничен. Пользователь получает страницы содержащие только HTML-код. Реализовать эту возможность средствами языка PHP;
В качестве
программного обеспечения, выбранного для разработки системы выбраны: средство
разработки web-узлов Macromedia Dreamweaver MX 2004, web-сервер Apache
2, язык web-программирования PHP
4 и сервер баз данных MySQL 4.
Основываясь
на выборе интернет-технологии дистанционного обучения можно также
сформулировать дополнительные требования к разрабатываемому ПО:
Простота в
освоении, требующая знаний и умений на уровне пользователя компьютера среднего
уровня;
Открытость
программного кода;
Отсутствие необходимости
установки дополнительных программ для функционирования созданного продукта;
Web-совместимость (совместимость с различными браузерами).
Модификация web-приложения с незначительными финансовыми и трудовыми
затратами;
Незначительный
объем (компактность);
Обеспечение полного
цикла самостоятельной работы с создаваемым web-приложением;
Обеспечение "на
выходе" готового продукта, не требующего специальной доработки, но
имеющего такую возможность, и пригодного к включению в образовательный процесс.
Теперь
необходимо сказать несколько слов об оформлении учебного материала,
используемого в процессе обучения.
Вообще, web-приложение предоставляет практически уникальные возможности
творческого подхода к оформлению документов. Может быть выбрана любая удобная
форма представления материала читателю. Это могут быть фотографии, графики,
рисунки, текст, видеофрагменты и т.д. Все это может быть расположено на
странице практически в произвольной форме. Но в данном случае, когда речь идет
о чтении и рассмотрении материала с целью его понимания и запоминания,
наверное, необходимо выработать единую концепцию оформления документов. Может
быть, даже полезным будет определение подобия стандарта, который будет
использоваться во всех без исключения случаях публикации учебного материала.
Уже
доказано, что степень усваиваемости информации с экрана монитора на 25% ниже,
чем при чтении с листа бумаги. Это обуславливает некоторые простые принципы, которые
могут помочь при оформлении и публикации.
Прежде
всего, не следует использовать никаких графических изображений, помещаемых на
фон страницы. Фон, по всей видимости, должен быть монотонным. Если фон белый,
то текст должен быть написан темным цветом, например, черным или темно-синим. Не
стоит использовать темный фон и светлый шрифт - это будет утомлять глаза
читателя. При подборе гарнитуры шрифта следует исходить из того, что читаемость
текста, написанного гарнитурой без засечек, выше, чем текста, написанного
гарнитурой с засечками. При этом следует полностью отказаться от использования
мелких размеров шрифтовых гарнитур.
Нужно также
учитывать, что страницы будут просматриваться в системах с разным графическим
разрешением и глубиной цвета. Использование графических форматов,
поддерживающих сжатие изображения (таких как GIF и JPEG), позволит сократить
общий объем документов, передаваемых по сети для отображения.
Теперь
остановимся на содержании документов. Удаленное обучение - это как раз тот
случай, когда содержание документов должно преобладать над формой его
представления. Форма всех документов должна быть как можно более строгой. Страница
не должна содержать никакой лишней информации (графической или текстовой),
которая могла бы отвлечь внимание читающего. Зона чтения документа должна быть
как можно более узкой. Этому может способствовать создание полей по краям
документа. Не следует создавать документы с горизонтальной прокруткой - читать
и изучать их будет очень неудобно. Длина (объем) каждого отдельного документа
не должна превышать 30-40 Кб, что позволит ускорить их загрузку.
Само собой
разумеется, что все учебные материалы должны быть четко структурированы и по
возможности должны предоставлять возможность интерактивного поиска среди них. Учебные
материалы могут передаваться лицу, заинтересованному в их изучении, любым
способом. Это может быть и непосредственная загрузка и чтение документа с web-сервера, и передача архива документов для просмотра
программой-клиентом без подключения к Интернет, а также другими способами,
которые будут обусловлены методикой учебного процесса.
Современные web-приложения становятся все более сложными и все более
перегружаются логикой. Раньше производительность таких приложений определялась,
в основном, скоростью работы того или иного SQL-сервера и тем, существует ли
для него достаточно эффективная реализация драйвера доступа к SQL-серверу для
выбранного языка программирования. Это объясняется тем, что первое поколение web-приложений просто читало и писало информацию в базы
данных. Пользователей при этом было относительно немного. Таким образом, время
на отработку SQL-запроса составляло 70-90% от общего времени обработки
HTTP-запроса.
С повышением
требований к масштабируемости (увеличение количества пользователей) и
наращиванием логики приложения требования к языку программирования и среде
выполнения существенно возрастают. К этому следует также прибавить, что
относительно недавно web-приложения перешли из мира Интернет
в мир корпоративных приложений. Это снова повысило требования к эффективности
среды выполнения.
В настоящие
время для создания web-приложений существует множество
различных языков программирования. Самые популярные из них - PHP, Perl, С# (DOT.
NET), Java2. Классическая технология ASP становится историей, поскольку ASP DOT.
NET практически вытеснило эту технологию на Windows-серверах в новых
приложениях.
Для
разработки в работе выбран язык PHP в связке с сервером
баз данных MySQL. Для их работы требуется установка web-сервера Apache. В качестве среды
разработки выбрано средство создания web-узлов Macromedia Dreamweaver MX 2004.
PHP - это инструмент
объектно-ориентированного программирования с открытым кодом (open source), язык
серверных скриптов (server scripting language), встраиваемый в HTML, который
интерпретируется и выполняется на сервере [11].
PHP является
препроцессором HTML.Т. е. его работа построена по схеме, показанной на рисунке 1.2:
Рисунок 1.2 -
Схема работы препроцессора PHP
До того, как
сервер "отдаст" файл браузеру, его просматривает
препроцессор-интерпретатор. Для того, чтобы это происходило, файлы, которые
подвергаются обработке препроцессором, должны иметь определенное расширение
(обычно это. phtml или. php, но эти значения можно поменять) и содержать (хотя
это не обязательное требование) код для препроцессора. Перед отправкой страницы
PHP-код проигрывается на сервере и браузеру выдается результат в виде опять
таки HTML-страницы, которая может сильно отличаться от той, что хранится на
сервере. Обычные же страницы, имеющие расширение. html/htm web-сервер
будет отправлять браузеру без какой-либо обработки.
Основное
отличие от CGI-скриптов, написанных на других языках, типа Perl или C - это то,
что в CGI-программах вы сами пишете выводимый HTML-код, а, используя PHP - вы
встраиваете свою программу-скрипт в готовую HTML-страницу, используя
открывающий и закрывающий теги (в примере <? php и? >).
PHP
называется языком серверных скриптов в отличие от JavaScript/Jscript/VBScript,
которые являются языками клиентских скриптов. Это значит, что PHP-скрипт
выполняется на сервере, а клиенту передается результат его работы, тогда как в
JavaScript-код полностью передается на клиентскую машину и только там
выполняется браузером.
Пользователи
MS Internet Information Server найдут, что PHP очень похож на
Active Server Pages (ASP),
а пользователи Java скажут, что PHP похож на Java Server Pages (JSP). Еще
некоторыми аналогами PHP являются языки ColdFusion и embPerl. Все эти языки
позволяют размещать код, выполняемый на Web-сервере, внутри HTML-страниц. В
результирующей web-странице нет и следа PHP-кода.
На PHP можно
сделать все, что можно сделать с помощью CGI-программ. Например: обрабатывать
данные из форм, генерировать динамические страницы, получать и посылать куки
(cookies).
Кроме этого
в PHP включена поддержка многих баз данных (databases), что делает написание
Web-приложений с использованием БД до невозможности простым.
Вдобавок ко
всему PHP понимает протоколы IMAP, SNMP, NNTP, POP3 и даже HTTP, а также имеет возможность
работать с сокетами (sockets) и общаться по другим протоколам.
Разработчикам
web-приложений нет необходимости говорить, что
web-страницы - это не только текст и картинки. Достойный внимания сайт должен
поддерживать некоторый уровень интерактивности с пользователем: поиск
информации, продажа продуктов, конференции и т.п. До недавних пор все это традиционно
реализовалось CGI-скриптами, написанными на Perl. Но оказалось, что CGI-скрипты
очень плохо масштабируемы. Каждый новый вызов CGI-скрипта, требует от ядра
порождения нового процесса, а это занимает процессорное время и тратит
оперативную память. PHP предлагает другой вариант - он работает как часть web-сервера, и этим самым похож на ASP от Microsoft или
ColdFusion от Allaire.
Синтаксис
PHP очень похож на синтаксис C или Perl. Люди, знакомые с программированием,
очень быстро смогут начать писать программы на PHP. В этом языке нет строгой
типизации данных и нет необходимости в действиях по выделению/освобождению
памяти.
Программы,
написанные на PHP, читаются достаточно легко. В отличие от Perl-программ
PHP-код легко зрительно прочитать и понять.
В дополнение
к своей бесплатности (хотя MySQL требует приобретения лицензии при
использовании ее в коммерческих целях) связка PHP-MySQL является
кросс-платформенной. Это значит, что вы можете, работая в Windows,
разрабатывать приложения, предназначенные для работы под Unix. Кроме того, PHP
может работать как внешний CGI-процесс, либо как обычный интерпретатор
скриптов, либо как модуль, подключаемый к web-серверу Apache или IIS.
И наконец,
так как данный продукт разрабатывается совместными усилиями, существует
огромное количество документации и списков рассылки, к которым можно обратиться
в случае возникновения каких-либо вопросов.
Найденные
ошибки исправляются достаточно быстро, ваши предложения и замечания всегда
выслушают, рассмотрят, и если они окажутся ценными - реализуют в новой версии.
MySQL -
небольшой, компактный многопоточный сервер баз данных. MySQL характеризуется
большой скоростью, устойчивостью и легкостью в использовании [11].
MySQL был
разработан компанией TcX для внутренних нужд, которые заключались в быстрой
обработке очень больших баз данных. Компания утверждает, что использует MySQL с
1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из
которых более чем 500 имеют более 7 миллионов строк. MySQL является идеальным
решением для малых и средних приложений. Исходные тексты сервера компилируются
на множестве платформ. Наиболее полно возможности сервера проявляются на
Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост
производительности. В варианте под Windows, MySQL может запускаться как сервис
Windows NT или как обычный процесс на Windows 95/98.
MySQL-сервер
является бесплатным для некоммерческого использования.
MySQL
поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет
множество расширений к этому стандарту, которых нет ни в одной другой СУБД.
Краткий
перечень возможностей MySQL.
1
Поддерживается неограниченное количество пользователей, одновременно работающих
с базой данных;
2 Количество
строк в таблицах может достигать 50 млн;
3 Быстрое
выполнение команд. Возможно MySQL самый быстрый сервер из существующих;
4 Простая и
эффективная система безопасности.
MySQL
действительно очень быстрый сервер, но для достижения этого разработчикам пришлось
пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют:
Не
реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK
TABLE;
Нет
поддержки триггеров и хранимых процедур;
Нет
поддержки внешних ключей.
По словам
создателей именно эти пункты дали возможность достичь высокого быстродействия. Их
реализация существенно снижает скорость сервера. Эти возможности не являются
критичными при создании web-приложений, что в сочетании
с высоким быстродействием и малой ценой позволило серверу приобрести большую
популярность.
На
сегодняшний момент существует два мощных средства создания web-узлов - это
последние версии Frontpage 2003 компании Microsoft и Dreamweaver MX 2004
компании Macromedia [7].
Программный
пакет FrontPage долгое время развивался и совершенствовался фирмой Microsoft. Его
версия FrontPage 2000 отличается от всех предыдущих тем, что она впервые
интегрирована в структуру пакета программ Microsoft Office. Вероятно, это
объясняется тем обстоятельством, что проектирование web-сайтов и мультимедийных
электронных изданий из задачи для профессионалов перешли в сферу офисной
деятельности. Однако, FrontPage 2002 вновь поставляется отдельно от Microsoft
Office XP.
FrontPage
специализирован на подготовке электронных изданий, в частности - на разработке web-узлов
целиком. Он поддерживает фреймовую структуру, ориентирован на простоту и
удобство создания гиперссылок, обеспечивает единый стиль оформления различных web-страниц, оптимизирует скорость их загрузки. Таким
образом, пакет отличается продуманностью реализации как эстетических, так и
технических аспектов создания электронных изданий и позволяет, в какой-то
степени, автоматизировать процесс проектирования. Неудобством в работе является
автоматическая вставка не всегда нужных тэгов.
Программный
пакет Dreamweaver, как и FrontPage, предназначен для проектирования различных
сайтов, в том числе и сайтов издательств, одной из задач которых является
распространение электронных изданий. Он пригоден как для создания небольших,
так и очень больших сайтов. В первом случае разработкой занимается единственный
специалист - web-мастер. В последнем случае над проектом работает целый
коллектив, включающий администратора проекта, web-дизайнера, HTML-верстальщика,
web-программиста, корректора, менеджера рассылок. Многие специалисты
утверждают, что профессиональные web-дизайнеры в своей работе чаще всего
используют Adobe Photoshop для подготовки графики и Macromedia Dreamweaver -
для дизайна отдельных web-страниц. Особенностью данного
программного средства является хорошая поддержка языка PHP,
который используется в проекте для программирования и автоматическая или ручная
синхронизация измененных данных с удаленным сервером. Эти особенности, а также
простота и быстрота работы программы во многом обуславливают выбор именно этого
программного продукта в качестве средства проектирования разрабатываемого web-приложения.
Инфологическая
модель предметной области - это описание предметной области, выполненное с
использованием специальных языковых средств, не зависящих от использования в
дальнейшем программных средств.
Требования к
инфологической модели:
адекватность
отображения предметной области;
непротиворечивость;
отражение
потребности всех пользователей будущей информационной системы;
допущение
возможных расширений модели, а также при большой размерности инфологической
модели - композиции и декомпозиции;
желательно
применение языка описания предметной области как при ручном, так и при
автоматизированном проектировании;
легкость
восприятия разными категориями пользователей.
Инфологическая
модель является ядром системы проектирования. Она содержит всю необходимую
информацию для проектирования приложения.
Инфологическая
модель предметной области представлена в приложении А.
Для описания
инфологической модели данных можно выделить десять объектов, которые участвуют
в обработке информации: "Пользователи", "Курсы ДО", "Подразделы
курса", "Преподаватели", "Курсы пользователей", "Тесты
пользователей", "Допустимые шифры", "Вопросы тестов", "Ответы
на вопросы тестов" и "Новости". Каждый объект обладает своими
свойствами.
Объект "Пользователи"
включает в себя данные о пользователях зарегистрированных в системе. Он
обладает свойствами: Логин, Пароль, Фамилия, Имя, Отчество, Учебная группа,
Дата регистрации, Пол, Адрес электронной почты, Шифр студента, Флаг
администрирования. Все указанные свойства, кроме свойств Логин, Дата
регистрации и Шифр студента, являются динамическими, т.е. могут меняться. Поля Логин,
Дата регистрации и Шифр студента- статические. Их значения остаются постоянными.
Объект "Курсы
ДО" включает в себя информацию о дисциплинах дистанционного обучения. Он
обладает свойствами: Идентификатор курса, Название курса, Аннотация курса, Полное
описание курса, Картинка курса, Продолжительность курса, №. Все указанные
свойства, кроме свойства Идентификатор курса, являются динамическими, т.е. могут
меняться. Поле Идентификатор курса - статическое.
Объект "Подразделы
курса" включает в себя информацию о подразделах курсов. Он обладает
свойствами: Идентификатор подраздела курса, № курса, № подраздела, Ссылка
загрузки подраздела, Описание подраздела, Название теста по подразделу,
Количество вопросов в тесте. Все указанные свойства, кроме свойства
Идентификатор подраздела курса, являются динамическими, т.е. могут меняться. Поле
Идентификатор подраздела курса - статическое.
Объект "Преподаватели"
включает в себя информацию о преподавателях курсов ДО. Он обладает свойствами: Идентификатор
преподавателя, Фамилия Имя Отчество преподавателя, Ученая степень
преподавателя, Адрес электронной почты преподавателя, Информация о
преподавателе, Фото преподавателя. Все указанные свойства, кроме свойства
Идентификатор преподавателя, являются динамическими, т.е. могут меняться. Поле
Идентификатор преподавателя - статическое.
Объект "Курсы
пользователей" включает в себя информацию о курсах ДО, на которые
зарегистрировались пользователи системы. Он обладает свойствами: Идентификатор
курса, Логин, № курса, Статус курса, Дата регистрации курса. Все указанные
свойства, кроме свойств Идентификатор курса и Дата регистрации курса, являются
динамическими, т.е. могут меняться. Поля Идентификатор курса и Дата регистрации
курса - статические, их значение не меняется.
Объект "Тесты
пользователей" включает в себя информацию о результатах тестирования
зарегистрированных студентов. Он обладает свойствами: Идентификатор теста,
курса пользователя, Число попыток теста, Процент лучшего результата теста, Дата
последнего тестирования. Все указанные свойства, кроме свойства Идентификатор
теста, являются динамическими, т.е. могут меняться. Поле Идентификатор теста -
статическое.
Объект "Допустимые
шифры" содержит шифры студентов, имеющих возможность дистанционного
обучения. Он обладает свойством: Шифр студента. Это поле не изменяется - оно
статическое.
Объект "Вопросы
тестов" содержит вопросы для тестов. Он обладает свойствами: Идентификатор
вопроса, № подраздела курса, Контекст вопроса. Все указанные свойства, кроме
свойства Идентификатор вопроса, являются динамическими, т.е. могут меняться. Поле
Идентификатор вопроса - статическое.
Объект "Ответы
на вопросы тестов" содержит ответы на вопросы тестов. Он обладает
свойствами: Идентификатор ответа, № вопроса, Контекст ответа, Флаг правильного
ответа. Все указанные свойства, кроме свойства Идентификатор ответа, являются
динамическими, т.е. могут меняться. Поле Идентификатор ответа - статическое.
Объект "Новости"
содержит информацию для вывода новостей. Он обладает свойствами: Идентификатор
новости, Название новости, Дата новости, Контекст новости, Автор новости. Все
указанные свойства, кроме свойства Идентификатор новости, являются
динамическими, т.е. могут меняться. Поле Идентификатор новости - статическое.
Объекты "Пользователи"
и "Курсы пользователей" связаны между собой связью "один-ко-многим",
объекты "Пользователи" и "Допустимые шифры" - связью "один-к-одному",
объекты "Курсы пользователей" и "Курсы ДО" - связью "многие-к-одному",
объекты "Курсы пользователей" и "Тесты пользователей" -
связью "один-ко-многим", объекты "Курсы пользователей" и "Тесты
пользователей" - связью "один-ко-многим", объекты "Курсы ДО"
и "Преподаватели" - связью "многие-к-одному", объекты "Курсы
ДО" и "Подразделы курса" - связью "один-ко-многим",
объекты "Тесты пользователей" и "Подразделы курса" - связью
"многие-к-одному", объекты "Подразделы курса" и "Вопросы
тестов" - связью "один-ко-многим", объекты "Вопросы тестов"
и "Ответы на вопросы тестов" - связью "один-ко-многим",
объект "Новости" не связан с другими объектами.
На основании
анализа предметной области и построенной
инфологической модели разработана реляционная база данных RLI_test. Для реляционной базы данных проектирование физической
структуры заключается в том, чтобы разбить всю информацию по таблицам, а также
определить состав полей для каждой из этих таблиц и
установить связи между таблицами.
В каждой
таблице присутствует уникальное идентификационное поле, которое позволяет
однозначно идентифицировать запись таблицы. Такая структура исключает
избыточность данных, позволяет ускорить отбор записей по условию, исключает
вероятность конфликтов при совместной работе нескольких пользователей.
Одной из
основных таблиц является таблица "users". В
ней хранится вся информация о пользователях, зарегистрированных в системе. Таблица
содержит поля - login -
идентификационное поле, идентифицирующее единственным образом студента при
входе в систему. Passwd -
пароль для доступа к подсистеме обучения. Пароль кодируется шифром md5, алгоритм которого реализован в языке PHP.
Кодирование позволяет защитить пароль от просмотра заинтересованными
пользователями. По этим двум параметрам осуществляется вход в систему.
Поле n_group хранит информацию о названии
учебной группы студента. Поле registration_date содержит дату регистрации студента в системе, это поле
заполняется автоматически текущей датой при успешной регистрации в системе. Поле
sex хранит пол студента - женский или мужской. В поле student_code хранится шифр студента. По
этому полю система проверяет, может ли студент обучаться дистанционно или нет. Запретить
обучение может администратор системы. Проверка осуществляется поиском значения
шифра в таблице student_codes.
Поле u_admin идентифицирует данного
пользователя как администратора или обычного пользователя. Если пользователь
является администратором, он обладает дополнительными правами по редактированию
базы данных, просмотру статистики, успеваемости, редактированию данных курсов и
редактированию базы тестов.
Ключевым
полем в таблице users является поле login.
По полю login данная таблица связана с таблицей "user_courses" связью "один-ко-многим",
по полю student_code - c таблицей "student_codes" связью "один-к-одному". Типы данных
полей таблицы "users" представлены в таблице 2.1
Таблица 2.1 -
Структура таблицы "users"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Логин студента
login
char(16)
Ключевое
2
Пароль
passwd
char(128)
NOT NULL
3
Фамилия
lastname
char(40)
NOT NULL
4
Имя
firstname
char(40)
NOT NULL
5
Отчество
middlename
char(40)
NOT NULL
6
Учебная группа
n_group
char(40)
NOT NULL
7
Дата регистрации в системе
registration_date
date
8
Пол
sex
enum('мужской', 'женский')
9
Адрес электронной почты
email
char(128)
NOT NULL
10
Шифр студента
student_code
char(10)
NOT NULL, UNIQUE
11
Флаг администратора
u_admin
enum('y', 'n')
DEFAULT 'n'
В таблице "courses" хранится информация о курсах дистанционного
обучения. Ключевым полем в таблице является поле id_course. Таблица связана по полю id_course с таблицей "user_courses" и таблицей "course_parts" связью "один-ко-многим", по полю n_teacher с таблицей "teachers" связью "многие-к-одному". Поле course_period содержит информацию о
продолжительности курса в месяцах. Если студент не прошел курс с даты
регистрации в течение числа месяцев, указанных в course_period курс считается не сданным. Структура таблицы с
описанием типов полей приведена в таблице 2.2
Таблица 2.2 -
Структура таблицы "courses"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор курса
id_course
int
Ключевое, AUTO_INCREMENT
2
Название курса
course_name
char(128)
NOT NULL
3
Аннотация курса
course_annotation
text
4
Ссылка на файл описания курса
course_full_description
char(128)
5
Ссылка на файл картинки курса
course_picture_link
char(128)
6
Продолжительность курса
course_period
float
7
Преподаватель курса
n_teacher
int
NOT NULL
В таблице "course_parts" хранится
информация о подразделах курсов дистанционного обучения. Ключевым полем в
таблице является поле id_course_part. Таблица связана по полю id_course_part с таблицей "questions" и таблицей "user_tests" связью "один-ко-многим", по полю n_course с таблицей "courses" связью "многие-к-одному". Структура
таблицы с описанием типов полей приведена в таблице 2.3
Таблица 2.3 -
Структура таблицы "course_parts"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор подраздела курса
id_course_part
int
Ключевое, AUTO_INCREMENT
2
Курс
n_course
int
NOT NULL
3
Подраздел курса
n_part
int
NOT NULL
4
Ссылка на файл загрузки подраздела курса
download_link
char(128)
NOT NULL
5
Описание ссылки загрузки
download_description
text
6
Название теста
test_name
char(128)
7
Количество вопросов, выводимых при тестировании
test_question_count
int
NOT NULL, DEFAULT 5
В таблице "questions" хранится информация о вопросах тестов. Ключевым
полем в таблице "questions" является поле id_question. Таблица связана по полю id_question с таблицей "answers" связью "один-ко-многим", по полю n_course_part
с таблицей "course_parts"
связью "многие-к-одному". Структура таблицы с описанием типов полей
приведена в таблице 2.4
Таблица 2.4 -
Структура таблицы "questions"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор вопроса
id_question
int
Ключевое, AUTO_INCREMENT
2
Подраздел
n_course_part
int
NOT NULL
3
Содержимое вопроса
question_content
char(255)
NOT NULL
В таблице "answers" хранится информация о вариантах ответов на
вопросы тестов. Ключевым полем в таблице является поле id_answer. Таблица связана по полю n_question с таблицей "questions"
связью "многие-к-одному". Структура таблицы с описанием типов полей
приведена в таблице 2.5
Таблица 2.5 -
Структура таблицы "answers"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор ответа
id_answer
int
Ключевое, AUTO_INCREMENT
2
Вопрос
n_question
int
NOT NULL
3
Содержимое ответа
answer_content
char(255)
NOT NULL
4
Флаг правильного ответа
right_answer
enum('y', 'n')
NOT NULL, DEFAULT 'n'
В таблице "user_courses" хранится информация
о курсах, на которые зарегистрировались студенты. Ключевым полем в таблице "user_courses" является поле id_user_course.
Таблица связана по полю id_user_course с таблицей "user_tests" связью "один-ко-многим", по полю login с таблицей "users"
связью "многие-к-одному", по полю n_course с таблицей "courses"
связью "многие-к-одному". Структура таблицы с описанием типов полей
приведена в таблице 2.6
Таблица 2.6 -
Структура таблицы "user_courses"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор курса студента
id_user_course
int
Ключевое, AUTO_INCREMENT
2
Логин студента
login
char(16)
NOT NULL
3
Курс
n_course
int
NOT NULL
4
Статус курса
status
enum('reg', 'end', 'not')
NOT NULL
5
Дата регистрации курса
registration_date
date
6
Дата окончания курса
end_date
date
В таблице "user_tests" хранится информация
о тестах пройденных студентами. Ключевым полем в таблице "user_tests" является поле id_user_test.
Таблица связана по полю n_user_course с таблицей "user_courses" связью "многие-к-одному", по полю n_course_part
с таблицей "course_parts"
связью "многие-к-одному". Поле status может
принимать одно из трех значений - reg -
студент обучается, end -
студент успешно завершил курс, not -
студент не прошел курс. Поле registration_date заполняется автоматически текущей датой при регистрации
на курс. Поле end_date заполняется автоматически текущей датой при успешном или
неуспешном завершении курса. Структура таблицы с описанием типов полей
приведена в таблице 2.7
Таблица 2.7 -
Структура таблицы "user_tests"
№п/п
Описание
Поле
Тип данных
Дополнительные параметры
1
Идентификатор теста студента
id_user_test
int
Ключевое, AUTO_INCREMENT
2
Курс студента
n_user_course
int
NOT NULL
3
Подраздел курса
n_course_part
int
NOT NULL
4
Число использованных попыток
attemps
int
5
Процент лучшего результата
percent
int
6
Дата последнего тестирования
last_test_date
date
В таблице "teachers" хранится информация о преподавателях. Ключевым
полем в таблице "teachers" является поле id_teacher. Таблица связана по полю id_teacher с таблицей "courses" связью "один-ко-многим". Поле attemps содержит число попыток студента пройти тест. В поле last_test_date
заносится дата последней попытки прохождения теста. Структура таблицы с
описанием типов полей приведена в таблице 2.8