47274 (588474), страница 8
Текст из файла (страница 8)
4 Простая и эффективная система безопасности.
MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют:
Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE;
Нет поддержки триггеров и хранимых процедур;
Нет поддержки внешних ключей.
По словам создателей именно эти пункты дали возможность достичь высокого быстродействия. Их реализация существенно снижает скорость сервера. Эти возможности не являются критичными при создании web-приложений, что в сочетании с высоким быстродействием и малой ценой позволило серверу приобрести большую популярность.
1.11.3 Выбор средства проектирования 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-приложения.
2. Проектная часть
2.1 Построение инфологической модели предметной области
Инфологическая модель предметной области - это описание предметной области, выполненное с использованием специальных языковых средств, не зависящих от использования в дальнейшем программных средств.
Требования к инфологической модели:
адекватность отображения предметной области;
непротиворечивость;
отражение потребности всех пользователей будущей информационной системы;
допущение возможных расширений модели, а также при большой размерности инфологической модели - композиции и декомпозиции;
желательно применение языка описания предметной области как при ручном, так и при автоматизированном проектировании;
легкость восприятия разными категориями пользователей.
Инфологическая модель является ядром системы проектирования. Она содержит всю необходимую информацию для проектирования приложения.
Инфологическая модель предметной области представлена в приложении А.
Для описания инфологической модели данных можно выделить десять объектов, которые участвуют в обработке информации: "Пользователи", "Курсы ДО", "Подразделы курса", "Преподаватели", "Курсы пользователей", "Тесты пользователей", "Допустимые шифры", "Вопросы тестов", "Ответы на вопросы тестов" и "Новости". Каждый объект обладает своими свойствами.
Объект "Пользователи" включает в себя данные о пользователях зарегистрированных в системе. Он обладает свойствами: Логин, Пароль, Фамилия, Имя, Отчество, Учебная группа, Дата регистрации, Пол, Адрес электронной почты, Шифр студента, Флаг администрирования. Все указанные свойства, кроме свойств Логин, Дата регистрации и Шифр студента, являются динамическими, т.е. могут меняться. Поля Логин, Дата регистрации и Шифр студента- статические. Их значения остаются постоянными.
Объект "Курсы ДО" включает в себя информацию о дисциплинах дистанционного обучения. Он обладает свойствами: Идентификатор курса, Название курса, Аннотация курса, Полное описание курса, Картинка курса, Продолжительность курса, №. Все указанные свойства, кроме свойства Идентификатор курса, являются динамическими, т.е. могут меняться. Поле Идентификатор курса - статическое.
Объект "Подразделы курса" включает в себя информацию о подразделах курсов. Он обладает свойствами: Идентификатор подраздела курса, № курса, № подраздела, Ссылка загрузки подраздела, Описание подраздела, Название теста по подразделу, Количество вопросов в тесте. Все указанные свойства, кроме свойства Идентификатор подраздела курса, являются динамическими, т.е. могут меняться. Поле Идентификатор подраздела курса - статическое.
Объект "Преподаватели" включает в себя информацию о преподавателях курсов ДО. Он обладает свойствами: Идентификатор преподавателя, Фамилия Имя Отчество преподавателя, Ученая степень преподавателя, Адрес электронной почты преподавателя, Информация о преподавателе, Фото преподавателя. Все указанные свойства, кроме свойства Идентификатор преподавателя, являются динамическими, т.е. могут меняться. Поле Идентификатор преподавателя - статическое.
Объект "Курсы пользователей" включает в себя информацию о курсах ДО, на которые зарегистрировались пользователи системы. Он обладает свойствами: Идентификатор курса, Логин, № курса, Статус курса, Дата регистрации курса. Все указанные свойства, кроме свойств Идентификатор курса и Дата регистрации курса, являются динамическими, т.е. могут меняться. Поля Идентификатор курса и Дата регистрации курса - статические, их значение не меняется.
Объект "Тесты пользователей" включает в себя информацию о результатах тестирования зарегистрированных студентов. Он обладает свойствами: Идентификатор теста, № курса пользователя, Число попыток теста, Процент лучшего результата теста, Дата последнего тестирования. Все указанные свойства, кроме свойства Идентификатор теста, являются динамическими, т.е. могут меняться. Поле Идентификатор теста - статическое.
Объект "Допустимые шифры" содержит шифры студентов, имеющих возможность дистанционного обучения. Он обладает свойством: Шифр студента. Это поле не изменяется - оно статическое.
Объект "Вопросы тестов" содержит вопросы для тестов. Он обладает свойствами: Идентификатор вопроса, № подраздела курса, Контекст вопроса. Все указанные свойства, кроме свойства Идентификатор вопроса, являются динамическими, т.е. могут меняться. Поле Идентификатор вопроса - статическое.
Объект "Ответы на вопросы тестов" содержит ответы на вопросы тестов. Он обладает свойствами: Идентификатор ответа, № вопроса, Контекст ответа, Флаг правильного ответа. Все указанные свойства, кроме свойства Идентификатор ответа, являются динамическими, т.е. могут меняться. Поле Идентификатор ответа - статическое.
Объект "Новости" содержит информацию для вывода новостей. Он обладает свойствами: Идентификатор новости, Название новости, Дата новости, Контекст новости, Автор новости. Все указанные свойства, кроме свойства Идентификатор новости, являются динамическими, т.е. могут меняться. Поле Идентификатор новости - статическое.
Объекты "Пользователи" и "Курсы пользователей" связаны между собой связью "один-ко-многим", объекты "Пользователи" и "Допустимые шифры" - связью "один-к-одному", объекты "Курсы пользователей" и "Курсы ДО" - связью "многие-к-одному", объекты "Курсы пользователей" и "Тесты пользователей" - связью "один-ко-многим", объекты "Курсы пользователей" и "Тесты пользователей" - связью "один-ко-многим", объекты "Курсы ДО" и "Преподаватели" - связью "многие-к-одному", объекты "Курсы ДО" и "Подразделы курса" - связью "один-ко-многим", объекты "Тесты пользователей" и "Подразделы курса" - связью "многие-к-одному", объекты "Подразделы курса" и "Вопросы тестов" - связью "один-ко-многим", объекты "Вопросы тестов" и "Ответы на вопросы тестов" - связью "один-ко-многим", объект "Новости" не связан с другими объектами.
2.2 Построение даталогической модели предметной области
На основании анализа предметной области и построенной инфологической модели разработана реляционная база данных 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 | Адрес электронной почты | | 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















