- •Введение
- •1. Обоснование разработки системы
- •1.1 Описание предметной области
- •1.2 Анализ аналогов и прототипов
- •1.3 Подтверждение необходимости и актуальности проектирования
- •1.4 Анализ и выбор средств решения поставленной задачи
- •1.5 Перечень функций разрабатываемой системы
- •2. Разработка проекта системы
- •2.1 Разработка структурной схемы системы
- •2.2 Проектирование баз данных
- •2.3 Разработка и описание рабочих алгоритмов
- •2.4 Требования к системам передачи информации
- •2.5 Описание технологии обработки информации
- •2.6 Разработка интерфейса взаимодействия пользователя с системой
- •3. Реализация проекта системы
- •3.1 Разработка рабочей программы
- •3.2 Реализация графа диалога пользователей
- •3.3 Тестирование программных средств
- •3.4 Оценка надежности
- •3.5 Разработка сопроводительных документов
- •4. Технико-экономическое обоснование разработки
- •5. Рекомендации по безопасности жизнедеятельности и экологии
- •Заключение
- •Список использованных источников
- •Приложение б
- •Приложение в
2.2 Проектирование баз данных
Для обеспечения требуемой функциональности, разрабатываемый программный комплекс должен обрабатывать большие объемы данных, таких как тестовые наборы данных, данные о группах, пользователях и результатах прохождения тестов пользователями, различные служебные данные. По этой причине к среде хранения данных предъявляются жесткие требования: обеспечение целостности и непротиворечивости хранимых данных, высокая скорость обработки данных, высокая степень защищенности данных от посягательств со стороны злоумышленников, поддержка многопользовательского доступа к данным с функциями разрешения или исключения конфликтных ситуаций. Всем описанным требованиям отвечают реляционные базы данных. В качестве целевой системы управления базой данных (СУБД) выбран Microsoft SQL Server 2005(Standard Edition), который полностью обеспечивает выполнение поставленных выше требования к среде хранения данных. Кроме этого выбранный программный продукт обладает достаточно удобными средствами администрирования баз данных, что существенно упрощает разработку программного комплекса в целом.
Несмотря на то, что проектируемая база данных состоит из взаимосвязанных сущностей, в ней можно выделить две основные подгруппы сущностей. К первой подгруппе отнесем сущности, описывающие хранилища данных о тестах, вопросах и ответах к этим вопросам. Ко второй – сущности пользователей, групп пользователей и результатов прохождения пользователями тестов. На рисунке 2.х представлена ER-модель разрабатываемой базы данных.
Рисунок 2.2 – ER-модель базы данных
Опишем входящие в базу данных сущности и их атрибуты
Сущность Sections. Информация о разделах тестов.
Атрибуты:
Section_id. Тип: integer. Первичный ключ.
Section_name.Тип: text. Наименование раздела тестов.
Section_hidden. Тип: bit. Флаг сокрытия раздела тестов. Принимает значения «1» и «0». При значении «1» раздел тестов удаляется из списка видимых. Информация не удаляется.
Сущность Tests. Информация и параметры теста.
Атрибуты:
Test_id. Тип: integer. Первичный ключ таблицы.
Test_description. Тип: text. Описание теста.
Test_section_id. Тип: integer. Хранится идентификатор из сущности Sections. Определяет принадлежность теста к разделу.
Test_name. Тип: text. Имя теста.
Test_type. Тип: integer. Тип теста. Принимает значения «0» и «1». «0» - контрольный тест, «1» - психологический (подсчет баллов).
Test_author. Тип: varchar(128). Автор теста.
Test_questions_count. Тип: integer. Количество вопросов в тесте.
Test_questions_limit. Тип: integer. Определяет то количество из общего числа вопросов в тесте, которое будет задано пользователю.
Test_is_random_answers. Тип: bit. Флаг перемешивания вариантов ответов. Принимает значения «1» и «0».
Tests_is_time_limit. Тип: bit. Флаг ограничения времени на тест. Принимает значения «1» и «0».
Test_time_limit. Тип: char(8). Ограничение времени на тест.
Test_is_back. Тип: bit. Флаг возможности возврата на предыдущий вопрос. Принимает значения «1» и «0».
Сущность Questions. Вопросы тестов.
Атрибуты:
Question_id. Тип: integer. Первичный ключ.
Question_test_id. Тип: integer. Хранится идентификатор из сущности Tests. Определяет принадлежность вопроса к тесту.
Question_number. Тип: integer. Локальный номер вопроса. Нумерация начинается с единицы.
Question_header. Тип: varchar(1024). Заголовок вопроса. Может дублироваться текст вопроса. Используется при ведении истории ответов пользователя.
Question_Text. Тип: text. Текст вопроса. Поддерживается возможность форматирования текста и использования стандартных OLE-объектов.
Question_time. Тип: char(8). Время на ответ.
Questin_type. Тип: integer. Тип вопроса. «0» - одиночный выбор, «1» - множественный выбор, «2» -соответствие , «3» - упорядоченный список. «4» - свободный ввод.
Question_weight. Тип: integer. Количество начисляемых баллов в случае правильного ответа на вопрос.
Сущность Answers. Варианты ответов к вопросам.
Атрибуты:
Answer_id. Тип: integer. Первичный ключ.
Answer_question_id. Тип: integer. Хранится идентификатор из сущности Questions. Определяет принадлежность варианта ответа к вопросу.
Answer_number. Тип: integer. Локальный номер ответа. Нумерация начинается с единицы. Используется только для ответов на вопрос типа «упорядоченный список»
Answer_text. Тип: varchar(512). Текст варианта ответа. Возможность форматирования текста отсутствует.
Answer_score. Тип: integer. Количество баллов, начисляемых за ответ. Используется при типе теста «Психологический».
Answer_right. Тип: bit. Флаг правильности ответа. Принимает значения «0» и «1». При типах вопроса «упорядоченный список», «на соответствие» и «свободный ввод» - всегда устанавливается значение «1»
Answer_corresp. Тип: varchar(512). Применяется для определения правильного ответа в вопросах на соответствие.
Answer_picture. Тип: image. Может храниться изображение с вариантом ответа
Сущность Groups. Информация о группах пользователей.
Атрибуты:
Group_id. Тип: integer. Первичный ключ.
Group_name. Тип: varchar(512). Наименование группы.
Group_description. Тип: varchar(512). Описание группы.
Group_hidden. Тип: bit. Флаг сокрытия группы. Принимает значения «1» и «0». При значении «1» группа удаляется из списка видимых. Информация не удаляется.
Сущность Groupsections. Информация о соответствии группам разделов тестов.
Атрибуты:
Id. Тип: integer. Первичный ключ.
Gs_group_id. Тип: integer. Идентификатор группы.
Gs_section_id. Тип: integer. Идентификатор раздела тестов.
Сущность Users. Информация о пользователях.
Атрибуты:
User_id. Тип: integer. Первичный ключ.
User_group_id. Тип: integer. Хранится идентификатор из сущности Groups. Определяет принадлежность пользователя к группе.
User_name. Тип: varchar(512). Имя пользователя в формате ФИО.
User_code. Тип: varchar(128). Дополнительное поле для идентификатора пользователя (например, номера зачетной книжки).
User_password. Тип: varchar(128). Пароль пользователя. Хранится в закодированном виде. Алгоритм кодирования – md5.
User_desable_test. Тип: bit. Флаг, позволяющий временно запретить данному пользователю тестироваться
User_garants. Тип: integer. Кодирует права доступа пользователя. «0» - тестирующийся, «1» - редактор тестов, «2» - администратор
User_info. Тип: varchar(512). Информация о пользователе.
User_deleted. . Тип: bit. Флаг удаления пользователя. Принимает значения «1» и «0». При значении «1» становится невозможным использование учетной записи, данные сохраняются.
User_mail. Тип: varchar(128). Адрес e-mail пользователя.
Сущность User_results. Хранение результатов тестирования.
Атрибуты:
User_result_id. Тип: integer. Первичный ключ.
User_result_completed. Тип: bit. Флаг окончания теста (ответ на все имеющиеся вопросы). Принимает значения «1» и «0».
User_result_time_begin. Тип: smalldatetime. Время начала тестирования.
User_result_time_end. Тип: smalldatetime. Время окончания тестирования.
User_result_cmpleted_questions. Тип: integer. Количество пройденных вопросов.
User_result_right_questions. Тип: integer. Количество правильных ответов.
User_result_score. Тип: integer. Количество заработанных баллов.
User_result_percent_right. Тип: real. Процент правильных ответов.
User_result_total_questions. Тип: integer. Всего вопросов в тесте.
User_result_test_title. Тип: varchar(128). Название теста
User_id. Тип: integer. Хранится идентификатор из сущности Users. Определяет принадлежность результата к конкретному пользователю.
Сущность User_answers. Лог прохождения теста, может быть показан в отчете.
Атрибуты:
User_answer_user_result_id. Тип: integer. Первичный ключ.
User_answer_qnumber. Тип: integer. Номер вопроса.
User_answer_question. Тип: varchar(512). Текст вопроса с элементами разметки гипертекста для корректного вывода в поле отчета.
User_answer_answer. Тип: varchar(512). Текст ответа с элементами разметки гипертекста для корректного вывода в поле отчета.
User_answer_time. Тип: char(8). Время ответа на вопрос.
User_answer_is_right. Тип: bit. Флаг правильности ответа. Принимает значения «T» и «F».
User_answer_score. Тип: integer. Полученные баллы.
User_answer_answerd. Тип: bit. Флаг ответа на вопрос. Принимает значения «1» и «0».
Поддержка целостности и непротиворечивости данных осуществляется средствами целевой СУБД MS SQL Server 2005. При возникновении конфликтной ситуации СУБД генерирует соответствующее сообщение, которое автоматически будет транслировано в клиентское приложение и показано пользователю. Вызвавшая исключительную ситуацию транзакция выполнена не будет, а набор данных будет возвращен в предыдущее непротиворечивое состояние.
Резервное копирование данных, настройка и иные административные функции выполняются средствами администрирования, такими, как SQL Server Management Studio и SQL Server Business Intelligence Development Studio.
Наличие описанных механизмов поддержки целостности и непротиворечивости данных, а так же средств администрирования базы данных, делает обоснованным использование SQL Server 2005 в качестве целевой СУБД.
