Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
isxodniki.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

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 в качестве целевой СУБД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]