UML Class Diagram: структура классов системы Union

Открыть UML-calss диаграмму в diagrams.net

Описание

Диаграмма классов описывает логическую структуру информационной системы Union, предназначенной для контроля и оценки знаний студентов.

На диаграмме представлены основные сущности системы: преподаватели, студенты, группы, дисциплины, тесты, вопросы, варианты ответов, результаты прохождения тестов, ответы студентов, журнал и сообщения.

Модель показывает, какие данные хранятся в системе и как они связаны между собой. На основе этой диаграммы можно понять структуру базы данных, основные связи между объектами и логику работы системы тестирования.

Основные классы системы

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. Journal

Класс Journal описывает журнал, связывающий преподавателя и учебную группу.

Журнал используется для организации контроля учебного процесса по группе и преподавателю.

Основные атрибуты:

– id — уникальный идентификатор записи журнала;

– group — ссылка на учебную группу;

– teacher — ссылка на преподавателя.

5. Disciplines

Класс Disciplines хранит данные об учебных дисциплинах.

Дисциплина связана с преподавателем и используется для создания тестов.

Основные атрибуты:

– id — уникальный идентификатор дисциплины;

– title — название дисциплины;

– image — изображение или обложка дисциплины;

– teacher — ссылка на преподавателя.

6. Groups_Disciplines

Класс Groups_Disciplines является связующей сущностью между группами и дисциплинами.

Он нужен для реализации связи «многие-ко-многим»: одна группа может изучать несколько дисциплин, и одна дисциплина может быть назначена нескольким группам.

Основные атрибуты:

– id — уникальный идентификатор связи;

– group — ссылка на группу;

– discipline — ссылка на дисциплину.

7. Tests

Класс Tests хранит данные о тестах.

Тест относится к конкретной дисциплине и содержит вопросы для проверки знаний студентов.

Основные атрибуты:

– id — уникальный идентификатор теста;

– title — название теста;

– desc — описание теста;

– Опубликован — дата публикации теста;

– Сдача — дата сдачи теста;

– Активность — признак активности теста;

– Дисциплина — ссылка на дисциплину.

8. Questions

Класс Questions хранит вопросы, которые входят в состав теста.

Каждый вопрос относится к конкретному тесту.

Основные атрибуты:

– id — уникальный идентификатор вопроса;

– question — текст вопроса;

– test — ссылка на тест.

9. Variants

Класс Variants хранит варианты ответов на вопросы.

Каждый вариант ответа связан с конкретным вопросом. Поле answer показывает, является ли вариант правильным.

Основные атрибуты:

– id — уникальный идентификатор варианта ответа;

– variant — текст варианта ответа;

– answer — признак правильного ответа;

– question — ссылка на вопрос.

10. Dones

Класс Dones фиксирует факт прохождения теста студентом.

Эта сущность связывает студента и тест, позволяя хранить информацию о том, какие тесты уже были выполнены.

Основные атрибуты:

– id — уникальный идентификатор записи;

– test — ссылка на тест;

– student — ссылка на студента.

11. Answers

Класс Answers хранит ответы студентов.

Ответ связывает студента с выбранным вариантом ответа. Через эту сущность можно определить, какие варианты выбрал студент при прохождении теста.

Основные атрибуты:

– id — уникальный идентификатор ответа;

– student — ссылка на студента;

– variant — ссылка на выбранный вариант ответа.

12. Messages

Класс Messages хранит сообщения пользователей системы.

Сообщения могут быть связаны со студентами или преподавателями. Для определения отправителя используются поля user_id и user_type_id.

Основные атрибуты:

– id — уникальный идентификатор сообщения;

– message — текст сообщения;

– time — время отправки сообщения;

– user_id — идентификатор пользователя;

– user_type_id — тип пользователя.

Основные связи между классами

Связь Groups — Students

Одна учебная группа может включать нескольких студентов.

При этом каждый студент относится к одной группе. В диаграмме это отражено через внешний ключ group в классе Students.

Groups 1 ─── * Students

Связь Teachers — Disciplines

Один преподаватель может вести несколько дисциплин.

Каждая дисциплина может быть связана с преподавателем через поле teacher.

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

Связь Users — Messages

Сообщения связаны с пользователями системы.

На диаграмме сообщения могут относиться к студентам и преподавателям. Поле user_type_id помогает определить тип пользователя.

Students 1 ─── * Messages

Teachers 1 ─── * Messages

Логика работы модели

Модель отражает основной сценарий работы системы Union.

Преподаватель создаёт дисциплину и тесты по этой дисциплине. Каждый тест содержит вопросы, а каждый вопрос содержит варианты ответов. Студент относится к учебной группе, проходит доступные тесты и выбирает варианты ответов. Ответы сохраняются в системе, а факт прохождения теста фиксируется в сущности Dones.

Группы и дисциплины связаны через промежуточную таблицу Groups_Disciplines, что позволяет назначать одну дисциплину нескольким группам и одну группу связывать с несколькими дисциплинами.

Журнал связывает преподавателя и группу, что позволяет фиксировать учебный процесс и организовывать контроль работы преподавателя с группой.

Сообщения позволяют хранить коммуникацию пользователей системы. Так как сообщения могут относиться к разным типам пользователей, в модели используется связка user_id и user_type_id.

Ключевые особенности модели

– студенты и преподаватели вынесены в отдельные сущности;

– группы используются для объединения студентов;

– дисциплины связываются с преподавателями;

– связь между группами и дисциплинами реализована через промежуточную сущность;

– тесты относятся к дисциплинам;

– вопросы относятся к тестам;

– варианты ответов относятся к вопросам;

– ответы студентов хранятся отдельно от вариантов ответов;

– факт прохождения теста фиксируется отдельной сущностью Dones;

– сообщения поддерживают связь с пользователями разных типов.

Замечания по дальнейшему улучшению модели

При дальнейшем развитии системы модель можно улучшить.

Возможные доработки:

– объединить студентов, преподавателей и администраторов в единую сущность Users с ролями;

– заменить поле password на password_hash, чтобы явно отразить безопасное хранение паролей;

– добавить отдельную сущность Roles для разграничения прав доступа;

– добавить сущность Attempts для хранения попыток прохождения тестов с датой начала, датой завершения, баллом и статусом;

– расширить сущность Answers, добавив связь не только со студентом и вариантом ответа, но и с конкретной попыткой прохождения;

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

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