Автоматизация проверки знаний и навыков студентов в области прикладной математики и информатики

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



В°

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>