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, добавив связь не только со студентом и вариантом ответа, но и с конкретной попыткой прохождения;
– добавить поля для хранения итогового результата теста, процента выполнения и оценки;
– уточнить модель сообщений, чтобы явно разделить отправителя, получателя и тип пользователя.