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 связь с конкретной попыткой прохождения;

– хранить итоговый балл, процент выполнения и дату прохождения теста;

– уточнить модель сообщений: отправитель, получатель, тип сообщения, статус прочтения.