ER-модель базы данных системы Union
Описание
ER-модель описывает логическую структуру базы данных информационной системы Union.
Система предназначена для контроля и оценки знаний студентов. База данных хранит сведения о преподавателях, студентах, учебных группах, дисциплинах, тестах, вопросах, вариантах ответов, ответах студентов, фактах прохождения тестов, журнале и сообщениях.
ER-модель показывает, какие сущности используются в системе, какие атрибуты они содержат и как связаны между собой.
Основные сущности базы данных
1. Teachers
Сущность Teachers хранит данные о преподавателях.
Преподаватель создаёт дисциплины, тесты, вопросы и участвует в контроле результатов студентов.
Поля:
– id — первичный ключ;
– surname — фамилия преподавателя;
– name — имя преподавателя;
– patronymic — отчество преподавателя;
– email — электронная почта;
– phone — номер телефона;
– password — пароль пользователя.
2. Students
Сущность Students хранит данные о студентах.
Студент относится к учебной группе, проходит тесты, отправляет ответы и получает результаты.
Поля:
– id — первичный ключ;
– surname — фамилия студента;
– name — имя студента;
– patronymic — отчество студента;
– email — электронная почта;
– phone — номер телефона;
– password — пароль пользователя;
– group — внешний ключ на группу студента.
3. Groups
Сущность Groups хранит данные об учебных группах.
Группа объединяет студентов и используется для назначения дисциплин.
Поля:
– id — первичный ключ;
– title — название группы.
4. Disciplines
Сущность Disciplines хранит данные об учебных дисциплинах.
Дисциплина связана с преподавателем и используется как основа для создания тестов.
Поля:
– id — первичный ключ;
– title — название дисциплины;
– image — изображение или обложка дисциплины;
– teacher — внешний ключ на преподавателя.
5. Groups_Disciplines
Сущность Groups_Disciplines является промежуточной таблицей между группами и дисциплинами.
Она реализует связь «многие-ко-многим»: одна группа может изучать несколько дисциплин, а одна дисциплина может быть назначена нескольким группам.
Поля:
– id — первичный ключ;
– group — внешний ключ на группу;
– discipline — внешний ключ на дисциплину.
6. Tests
Сущность Tests хранит данные о тестах.
Тест относится к конкретной дисциплине и содержит набор вопросов.
Поля:
– id — первичный ключ;
– title — название теста;
– desc — описание теста;
– published_at — дата публикации теста;
– deadline_at — дата сдачи теста;
– is_active — признак активности теста;
– discipline — внешний ключ на дисциплину.
7. Questions
Сущность Questions хранит вопросы теста.
Каждый вопрос относится к одному тесту.
Поля:
– id — первичный ключ;
– question — текст вопроса;
– test — внешний ключ на тест.
8. Variants
Сущность Variants хранит варианты ответов на вопросы.
Каждый вариант ответа относится к одному вопросу. Поле answer используется для указания правильного варианта.
Поля:
– id — первичный ключ;
– variant — текст варианта ответа;
– answer — признак правильного ответа;
– question — внешний ключ на вопрос.
9. Answers
Сущность Answers хранит ответы студентов.
Ответ связывает студента с выбранным вариантом ответа.
Поля:
– id — первичный ключ;
– student — внешний ключ на студента;
– variant — внешний ключ на выбранный вариант ответа.
10. Dones
Сущность Dones фиксирует факт прохождения теста студентом.
Она связывает студента и тест, показывая, что конкретный студент выполнил конкретный тест.
Поля:
– id — первичный ключ;
– test — внешний ключ на тест;
– student — внешний ключ на студента.
11. Journal
Сущность Journal используется для связи преподавателя и учебной группы.
Журнал позволяет организовать контроль учебного процесса по конкретной группе и преподавателю.
Поля:
– id — первичный ключ;
– group — внешний ключ на группу;
– teacher — внешний ключ на преподавателя.
Основные связи
Groups — Students
Одна группа может содержать много студентов.
Каждый студент относится к одной группе.
Groups 1 ─── * Students
Teachers — Disciplines
Один преподаватель может вести несколько дисциплин.
Каждая дисциплина связана с одним преподавателем.
Teachers 1 ─── * Disciplines
Groups — Disciplines
Группы и дисциплины связаны отношением «многие-ко-многим».
Для реализации этой связи используется промежуточная таблица Groups_Disciplines.
Groups 1 ─── * Groups_Disciplines * ─── 1 Disciplines
Disciplines — Tests
Одна дисциплина может содержать несколько тестов.
Каждый тест относится к одной дисциплине.
Disciplines 1 ─── * Tests
Tests — Questions
Один тест содержит несколько вопросов.
Каждый вопрос относится к одному тесту.
Tests 1 ─── * Questions
Questions — Variants
Один вопрос может иметь несколько вариантов ответов.
Каждый вариант ответа относится к одному вопросу.
Questions 1 ─── * Variants
Students — Answers
Один студент может дать несколько ответов.
Каждый ответ принадлежит одному студенту.
Students 1 ─── * Answers
Variants — Answers
Один вариант ответа может быть выбран несколькими студентами.
Каждый ответ студента ссылается на один выбранный вариант.
Variants 1 ─── * Answers
Students — Dones
Один студент может пройти несколько тестов.
Каждая запись Dones фиксирует прохождение одного теста одним студентом.
Students 1 ─── * Dones
Tests — Dones
Один тест может быть пройден несколькими студентами.
Каждая запись Dones относится к одному тесту.
Tests 1 ─── * Dones
Teachers — Journal
Один преподаватель может быть связан с несколькими записями журнала.
Teachers 1 ─── * Journal
Groups — Journal
Одна группа может быть связана с несколькими записями журнала.
Groups 1 ─── * Journal
Логика модели данных
ER-модель отражает основной процесс работы системы Union.
Преподаватель создаёт дисциплину и тесты по этой дисциплине. Тест состоит из вопросов, а вопросы содержат варианты ответов. Студент относится к учебной группе и проходит доступные тесты. При прохождении теста студент выбирает варианты ответов, которые сохраняются в таблице Answers.
Факт завершения теста фиксируется в таблице Dones. Это позволяет системе понимать, какие тесты уже выполнены студентом.
Связь между группами и дисциплинами реализована через таблицу Groups_Disciplines, потому что одна группа может изучать несколько дисциплин, а одна дисциплина может быть назначена нескольким группам.
Ключевые особенности ER-модели
– данные студентов и преподавателей хранятся в отдельных таблицах;
– студенты связаны с учебными группами;
– дисциплины связаны с преподавателями;
– группы и дисциплины связаны через промежуточную таблицу;
– тесты относятся к дисциплинам;
– вопросы относятся к тестам;
– варианты ответов относятся к вопросам;
– ответы студентов хранятся отдельно;
– факт прохождения теста фиксируется в отдельной таблице;
– журнал связывает преподавателя и группу;
– сообщения позволяют хранить коммуникацию пользователей.
Возможные улучшения модели
При дальнейшем развитии системы ER-модель можно улучшить:
– добавить единую таблицу Users для студентов, преподавателей и администраторов;
– добавить таблицу Roles для разграничения прав доступа;
– заменить поле password на password_hash;
– добавить таблицу Attempts для хранения попыток прохождения тестов;
– добавить в Answers связь с конкретной попыткой прохождения;
– хранить итоговый балл, процент выполнения и дату прохождения теста;
– уточнить модель сообщений: отправитель, получатель, тип сообщения, статус прочтения.