УДК 004.652.4
А.Н. Бурнаев, И.Г. Проценко
Камчатский государственный технический университет, Петропавловск-Камчатский, 683003 e-mail: kv4drokopter@gmail.com
ФИЗИЧЕСКАЯ МОДЕЛЬ И НОРМАЛИЗАЦИЯ БД ИСК (КТЕСТ)
Статья посвящена реализации физической модели базы данных подсистемы компьютерного тестирования (КТест) информационной системы кафедры (ИСК) КамчатГТУ. Приведено подробное описание таблиц фрагмента БД ИСК, связанного с КТест, и дан анализ соответствия таблиц нормальным формам с учетом особенностей СУБД MySQL.
Ключевые слова: компьютерное тестирование, проектирование баз данных, физическая модель БД, нормализация таблиц БД.
A.N. Burnaev, I.G. Protsenko
Kamchatka State Technical University, Petropavlovsk-Kamchatskу, 683003 e-mail: kv4drokopter@gmail.com
PHYSICAL MODEL AND NORMALIZATION OF THE INFORMATION SYSTEM "DEPARTMENT" DATABASE (CTEST)
The article is devoted to the implementation of the physical database model of the computer testing subsystem (CTest) of the information system "Department" (ISD) of Kamchatka State Technical University. A detailed description of the tables of the ISD database fragment associated with CTest is given, and an analysis of the correspondence of the tables to normal forms is given, taking into account the features of the MySQL database.
Key words: computer testing, database design, physical database model, normalization of database tables.
В контексте того, что Камчатский государственный технический университет (КамчатГТУ) играет существенную роль в подготовке специалистов для рыбной отрасли внедрение информационных систем и технологий, а также автоматизация и эффективное управление на их основе предстают в качестве примордиальных задач. Неотъемлемым методом оценки усвоенных знаний как в сфере образования, так и в профессиональной практике является процесс тестирования, оптимальная организация которого представляет собой комплексную задачу, заключающуюся в максимизации положительного воздействия прохождения тестов. В связи с этим в рамках работы на кафедре информационных систем КамчатГТУ в настоящее время ведется разработка информационной системы кафедры (ИСК). В ее состав планируется включить систему компьютерного тестирования (КТест) [1] в качестве одной из подсистем, которая должна быть реализована на основе веб-технологий с использованием соответствующей библиотеки.
Ключевым аспектом функционирования любой информационной системы, включая подсистему КТест, является организация ее базы данных. Оптимальное хранение и управление данными выступает важным фактором, обеспечивающим эффективное функционирование КТест. Процесс проектирования базы данных представляет собой систематический подход к анализу предметной области и созданию соответствующей модели данных. Данный процесс включает в себя:
• инфологическое моделирование, предполагающее частично формализованное описание объектов предметной области [2];
• даталогическое моделирование, которое учитывает структуру данных и их логические взаимосвязи в рамках выбранной модели [2];
• физическое проектирование, включающее выбор оптимальной организации данных на внешних носителях [2].
Описываемая подсистема представляет собой массивы данных, отражающих активность студентов и преподавателей, связанную с процессом тестирования, и хранящихся на сервере КамчатГТУ. Информация КТест, представленная в электронном формате, включает в себя несколько видов массивов данных:
- Вопросы (тестовые задания).
- Правильные и неправильные ответы на вопросы.
- Тесты, состоящие из набора вопросов.
- Назначения тестов.
- Результаты проведенных тестирований.
Функциональные задачи подсистемы, базирующиеся на представленных данных и включающие создание вопросов/тестов, назначение/прохождение тестов и просмотр результатов, обеспечивают эффективное управление тестированием и удовлетворяют потребностям пользователей. Однако для полноценной реализации функциональности системы необходимо разработать соответствующую физическую модель базы данных и провести анализ оптимальности хранения данных.
Физическая модель. Для описания наименования таблиц, столбцов, типов данных, определения первичных, внешних ключей для системы была использована физическая модель данных (табл. 1-12).
Таблица 1
Физическая модель таблицы «users»
Наименование поля Назначение поля Ключ Тип данных
id user Идентификатор пользователя smallint (5)
username Фамилия, имя, отчество пользователя varchar (255)
login Логин пользователя varchar (20)
password Пароль пользователя varchar (32)
access Уровень доступа к системе char (3)
own Статус пользователя tinyint (1)
Таблица 2
Физическая модель таблицы «questions»
Наименование поля Назначение поля Ключ Тип данных
id question Идентификатор вопроса mediumint (6)
question Текст вопроса varchar (255)
type Тип вопроса enum ( 'обычный', 'соответствие', 'последовательность')
difficulty Экспертная сложность tinyint (3)
difficulty с Статистическая сложность tinyint (3)
id user Идентификатор автора вопроса smallint (5)
timestamp Дата-время корректировки вопроса timestamp
Таблица 3
Физическая модель таблицы «answers»
Наименование поля Назначение поля Ключ Тип данных
id answer Идентификатор ответа tinyint (2)
id question Идентификатор вопроса mediumint (6)
answer Текст ответа varchar (255)
correct Правильность ответа enum ('true', 'false')
Таблица 4
Физическая модель таблицы «tests»
Наименование поля Назначение поля Ключ Тип данных
id test Идентификатор теста smallint (5)
test Название теста varchar (255)
id user Идентификатор автора теста smallint (5)
timestamp Дата-время корректировки timestamp
Таблица 5
Физическая модель таблицы «subjects»
Наименование поля Назначение поля Ключ Тип данных
id subject Идентификатор дисциплины smallint (4)
subject Название дисциплины varchar (255)
abb Аббревиатура дисциплины varchar (25)
Таблица 6
Физическая модель таблицы «test_questions»
Наименование поля Назначение поля Ключ Тип данных
id test Идентификатор теста smallint (5)
id_question Идентификатор вопроса mediumint (6)
Таблица 7
Физическая модель таблицы «question_subjects»
Наименование поля Назначение поля Ключ Тип данных
id question Идентификатор вопроса mediumint (6)
id subject Идентификатор дисциплины smallint (4)
Таблица 8
Физическая модель таблицы «grups»
Наименование поля Назначение поля Ключ Тип данных
id grup Идентификатор учебной группы smallint (3)
grup Название группы char (20)
Таблица 9
Физическая модель таблицы «students»
Наименование поля Назначение поля Ключ Тип данных
id student Идентификатор пользователя smallint (5)
id_grup Фамилия, имя, отчество пользователя smallint (3)
Таблица 10
Физическая модель таблицы «test_assign»
Наименование поля Назначение поля Ключ Тип данных
id assign Идентификатор назначения mediumint (6)
id test Идентификатор теста smallint (5)
id grup Идентификатор группы smallint (3)
test time Время прохождения tinyint (3)
N questions Количество вопросов в тесте tinyint (3)
difficulty Уровень сложности теста tinyint (3)
mode Режим прохождения теста enum ('контрольный', 'обучающий')
attempts Количество попыток char (1)
time start Дата-время начала тестирования datetime
time end Дата-время окончания тестирования datetime
id user Идентификатор пользователя smallint (5)
timestamp Дата-время назначения теста timestamp
Таблица 11
Физическая модель таблицы «results»
Наименование поля Назначение поля Ключ Тип данных
id result Идентификатор результата mediumint (6)
id assign Идентификатор назначения mediumint (8)
time start Дата-время начала тестирования datetime
time end Дата-время окончания тестирования datetime
id user Идентификатор пользователя smallint (5)
timestamp Дата-время корректировки timestamp
Таблица 12
Физическая модель таблицы «results_answers»
Наименование поля Назначение поля Ключ Тип данных
id_result Идентификатор результата mediumint (6)
id_question Идентификатор вопроса mediumint (6)
id_answer Идентификатор ответа tinyint (2)
seconds Количество секунд, затраченных на ответ datetime
Нормализация. Проектируемая база данных является реляционной, процесс нормализации для такой базы данных представляет преобразования отношений с целью оптимизации логической структуры отношений для устранения нежелательных свойств. Процесс проходит без потери информации исходного отношения.
В теории нормализации существует семь нормальных форм (НФ), однако только первые четыре используются в 80% практических задач по разработке базы данных.
Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение. То есть НФ - требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами (полями таблиц).
Устроены НФ, можно сказать, по принципу матрешки. Третья форма включает в себя вторую, вторая в свою очередь включает в себя первую.
1 НФ (первая нормальная форма): в каждом поле таблицы хранится атомарное значение (одно несоставное значение).
2 НФ (вторая нормальная форма): таблица должна иметь первичный ключ; все неключевые поля таблицы должны зависеть от полного ключа (в случае если ключ составной).
3 НФ (третья нормальная форма): все неключевые поля зависят только от первичного ключа, а не от других неключевых полей. Приводя таблицу к 3 НФ, избавляются от транзитивности. Транзитивная зависимость - зависимость, при которой неключевые атрибуты (они же поля) зависят от значений других неключевых полей.
База данных считается нормализованной, если соответствует минимум 3 форме. Следовательно, необходимо проверить базу данных системы КТест на соответствие всем трем нормальным формам.
Все таблицы приведены к первой нормальной форме, так как каждое поле каждой таблицы содержит атомарное значение, и ко второй нормальной форме, так как все таблицы:
1) имеют первичный ключ, а именно:
• таблица "questions" - idquestion,
• таблица "tests" - id_test,
• таблица " test_assign " - id_assign,
• таблица "results" - id_result,
• таблица "answers " - id_question, id_answer,
• таблица "results_answers" - id_result, id_question, id_answer.
2) в случаях если ключ составной, неключевые поля таблиц зависят от полного ключа, а именно:
• в таблице "answers " неключевые поля текст и правильность ответа относятся как к самому ответу, так и к вопросу,
• в таблице "results_answers ' лишь одно неключевое поле, а именно время ответа на вопрос, которое относится к конкретному результату, вопросу и ответу.
Анализ каждой таблицы базы данных системы КТест подтвердил, что они соответствуют всем требованиям трех нормальных форм, являющихся основополагающими принципами в теории реляционных баз данных, что подтверждает высокий уровень структурированности, эффективности и оптимальности организации данных и является важным аспектом в обеспечении надежности и производительности базы данных.
Таблица 13
Обоснование соответствия таблиц БД третьей нормальной форме (3 НФ)
Таблица БД Обоснование соответствия третьей нормальной форме (3 НФ)
questions Каждое неключевое поле в данной таблице должно относиться только к вопросу. Текст, тип, сложность и автор вопроса относятся непосредственно к самому вопросу и не зависят друг от друга, следовательно, все неключевые поля зависят только от первичного ключа (id_question), а не от других неключевых полей.
answers Неключевым полями являются текст и правильность ответа. Правильность ответа не относится непосредственно к тексту ответа, так как пользователь правильным может выбрать ответ с любым текстом, следовательно, все неключевые поля зависят только от первичного ключа (id question, id answer).
tests Неключевые поля текст и автор теста относятся только к самому тесту, следовательно, все неключевые поля зависят только от первичного ключа (id test), а не от других неключевых полей.
test_assign Каждое неключевое поле в данной таблице должно относиться только к назначению (назначенному тесту). Тест, группа, время прохождения, количество вопросов, сложность теста, режим прохождения, количество попыток, дата начала тестирования, дата окончания тестирования и автор назначения не зависят друг от друга и относятся непосредственно к самому назначению, следовательно, все неключевые поля зависят только от первичного ключа (id_assign), а не от других неключевых полей.
results Назначение, дата начала тестирования, дата окончания тестирования и пользователь (прошедший тест) относятся только к результату теста, следовательно, все неключевые поля зависят только от первичного ключа (id result), а не от других неключевых полей.
results_answers Так как таблица содержит лишь одно неключевое поле, оно не может иметь транзитивных зависимостей, следовательно, таблица "results_answers" считается нормализованной до 3 НФ.
В результате физического проектирования и процесса нормализации фрагмента базы данных ИСК, отвечающего за реализацию функций компьютерного тестирования подсистемы КТест, удалось обеспечить соответствие максимуму требований надежности, непротиворечивости и эффективности БД ИСК.
Литература
1. Бурнаев А.Н. Автоматизированная информационная система компьютерного тестирования КТест // E-POSTULAT.RU: Электрон. науч. журнал. - 2023. - URL: https://www.e-postulat.ru/ index.php/Postulat/article/view/5119
2. Карпова Т.С. Базы данных: модели, разработка, реализация: Учеб. пособие. - 2008. - 122 с.