Автоматизация проверки знаний и навыков студентов в области прикладной математики и информатики
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
В°
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. Идентификатор раздел?/p>