Обновить Database

2026-03-18 18:36:54 +00:00
parent 314c4d69f6
commit 828d682afc

@@ -14,96 +14,96 @@ description: Полное описание схемы базы данных пр
- `username` (VARCHAR(50), UNIQUE, NOT NULL) - логин - `username` (VARCHAR(50), UNIQUE, NOT NULL) - логин
- `password` (VARCHAR(255), NOT NULL) - хэш пароля (используется bcrypt через pgcrypto) - `password` (VARCHAR(255), NOT NULL) - хэш пароля (используется bcrypt через pgcrypto)
- `role` (VARCHAR(20), NOT NULL, DEFAULT 'STUDENT') - роль пользователя. Возможные значения: `ADMIN`, `TEACHER`, `STUDENT`. - `role` (VARCHAR(20), NOT NULL, DEFAULT 'STUDENT') - роль пользователя. Возможные значения: `ADMIN`, `TEACHER`, `STUDENT`.
- `created_at` - `created_at` (TIMESTAMP, DEFAULT, CURRENT_TIMESTAMP)
- `updated_at` - `updated_at` (TIMESTAMP, DEFAULT, CURRENT_TIMESTAMP)
- `full_name` - `full_name` (VARCHAR(255)) - Полное ФИО
- `job_title` - `job_title` (VARCHAR(255)) - Специальность преподавателя (доцент, профессор)
- `department_id` - `department_id` (BIGINT, REFERENCES) - Идентификатор кафедры
### 2. Формы обучения (`education_forms`) ### 2. Формы обучения (`education_forms`)
Справочник форм обучения. Справочник форм обучения.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(100), UNIQUE, NOT NULL) - например: 'Бакалавриат', 'Магистратура', 'Специалитет' - `name` (VARCHAR(100), UNIQUE, NOT NULL) - например: 'Бакалавриат', 'Магистратура', 'Специалитет'
- `description` - `description` (TEXT) - Описание
- `created_at` - `created_at` (TIMESTAMP, DEFAULT, CURRENT_TIMESTAMP) - Дата и время создания
### 3. Студенческие группы (`student_groups`) ### 3. Студенческие группы (`student_groups`)
Справочник учебных групп. Справочник учебных групп.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(100), UNIQUE, NOT NULL) - название группы (например, 'ИВТ-21-1') - `name` (VARCHAR(100), UNIQUE, NOT NULL) - название группы (например, 'ИВТ-21-1')
- `group_size` - `group_size` - Количество студентов
- `education_form_id` (BIGINT, FK -> education_forms.id) - привязка к форме обучения - `education_form_id` (BIGINT, FK -> education_forms.id) - привязка к форме обучения
- `course` - `course` - курс
- `created_at` - `created_at` - дата и время создания
- `department_id` - `department_id` (BIGINT, REFERENCES) - Идентификатор кафедры
### 4. Подгруппы (`subgroups`) ### 4. Подгруппы (`subgroups`)
Разделение групп на подгруппы (для лабораторных и практик). Разделение групп на подгруппы (для лабораторных и практик).
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `group_id` (BIGINT, FK -> student_groups.id) - `group_id` (BIGINT, FK -> student_groups.id) - Идентификатор группы
- `name` (VARCHAR(100), NOT NULL) - название подгруппы (например, 'Подгруппа 1') - `name` (VARCHAR(100), NOT NULL) - название подгруппы (например, 'Подгруппа 1')
- `student_capacity` - `student_capacity` - Количество студентов в подгруппе
### 5. Дисциплины (`subjects`) ### 5. Дисциплины (`subjects`)
Справочник учебных предметов. Справочник учебных предметов.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(200), UNIQUE, NOT NULL) - название дисциплины (например, 'Высшая математика') - `name` (VARCHAR(200), UNIQUE, NOT NULL) - название дисциплины (например, 'Высшая математика')
- `code` - `code` (VARCHAR(20)) - Код предмета
- `description` - `description` (TEXT) - Описание предмета
- `created_at` - `created_at` (TIMESTAMP, DEFAULT, CURRENT_TIMESTAMP) - Дата и время создания
- `department_id` - `department_id` (BIGINT, REFERENCES) - Идентификатор кафедры
### 6. Типы занятий (`lesson_types`) ### 6. Типы занятий (`lesson_types`)
Справочник видов учебных занятий. Справочник видов учебных занятий.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(50), UNIQUE, NOT NULL) - вид занятия (Лекция, Практика, Лабораторная работа) - `name` (VARCHAR(50), UNIQUE, NOT NULL) - вид занятия (Лекция, Практика, Лабораторная работа)
- `color_code` - `color_code` (VARCHAR(7), DEFAULT) - Цветовой код для типа урока
- `duration_minutes` - `duration_minutes` (INT, DEFAULT, 90) - Длительность урока в минутах
### 7. Оборудование (`equipments`) ### 7. Оборудование (`equipments`)
Справочник доступного оборудования для аудиторий. Справочник доступного оборудования для аудиторий.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(50), UNIQUE, NOT NULL) - например, 'Проектор', 'ПК', 'Лаборатория', 'Интерактивная доска' - `name` (VARCHAR(50), UNIQUE, NOT NULL) - например, 'Проектор', 'ПК', 'Лаборатория', 'Интерактивная доска'
- `description` - `description` (TEXT) - Описание оборудования
- `inventory_number` - `inventory_number` (VARCHAR(50)) - Инвентарный номер оборудования
### 8. Аудиторный фонд (`classrooms`) ### 8. Аудиторный фонд (`classrooms`)
Справочник аудиторий университета. Справочник аудиторий университета.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `name` (VARCHAR(50), UNIQUE, NOT NULL) - номер/название аудитории - `name` (VARCHAR(50), UNIQUE, NOT NULL) - номер/название аудитории
- `capacity` (INT, NOT NULL) - вместимость (количество посадочных мест) - `capacity` (INT, NOT NULL) - вместимость (количество посадочных мест)
- `building` - `building` (VARCHAR(50)) - Корпус
- `floor` - `floor` (INT) - Этаж
- `is_available` (BOOLEAN, DEFAULT TRUE) - статус доступности аудитории для проведения пар - `is_available` (BOOLEAN, DEFAULT TRUE) - статус доступности аудитории для проведения пар
- `description` - `description` (TEXT) - Описание аудитории
- `created_at` - `created_at` (TIMESTAMP, DEFAULT, CURRENT_TIMESTAMP) - Дата и время создания
### 9. Привязка оборудования к аудиториям (`classroom_equipments`) ### 9. Привязка оборудования к аудиториям (`classroom_equipments`)
Связующая таблица (Many-to-Many) для указания, какое оборудование есть в аудитории. Связующая таблица (Many-to-Many) для указания, какое оборудование есть в аудитории.
- `classroom_id` (BIGINT, FK -> classrooms.id) - `classroom_id` (BIGINT, FK -> classrooms.id) - ID аудитории
- `equipment_id` (BIGINT, FK -> equipments.id) - `equipment_id` (BIGINT, FK -> equipments.id) - ID оборудования
- `quantity` - `quantity` (INT, DEFAULT, 1 CHECK -> quantity > 0) - Дата и время создания
- `notes` - `notes` (TEXT) - Примечания к записи
### 10. Привязка преподавателей к дисциплинам (`teacher_subjects`) ### 10. Привязка преподавателей к дисциплинам (`teacher_subjects`)
Связующая таблица (Many-to-Many). Определяет, какие предметы имеет право вести преподаватель. Связующая таблица (Many-to-Many). Определяет, какие предметы имеет право вести преподаватель.
- `user_id` (BIGINT, FK -> users.id) - `user_id` (BIGINT, FK -> users.id) - ID преподавателя
- `subject_id` (BIGINT, FK -> subjects.id) - `subject_id` (BIGINT, FK -> subjects.id) - ID предмета
- `qualification_level` - `qualification_level` (VARCHAR(50)) - Уровень квалификации преподавателя
- `experience_years` - `experience_years` (INT) - Опыт преподавания
### 11. Расписание занятий (Пар) (`lessons`) ### 11. Расписание занятий (Пар) (`lessons`)
Главная таблица, хранящая сетку расписания. Связывает все основные сущности в рамках одного учебного занятия. Главная таблица, хранящая сетку расписания. Связывает все основные сущности в рамках одного учебного занятия.
- `id` (BIGSERIAL, РК) - `id` (BIGSERIAL, РК)
- `teacher_id` (BIGINT, FK -> users.id) - кто ведет пару - `teacher_id` (BIGINT, FK -> users.id) - кто ведет пару
- `group_id` - `group_id` (BIGINT NOT NULL REFERENCES student_groups(id))
- `subject_id` (BIGINT, FK -> subjects.id) - какую дисциплину ведут - `subject_id` (BIGINT, FK -> subjects.id) - какую дисциплину ведут
- `lesson_format` - `lesson_format` (VARCHAR(255) NOT NULL) - Формат урока
- `type_lesson` - `type_lesson` (VARCHAR(255) NOT NULL) - Тип урока
- `classroom_id` - `classroom_id` (BIGINT NOT NULL REFERENCES) - ID аудитории, в которой проходит урок
- `day` - `day` (VARCHAR(255) NOT NULL) - День недели, в который проходит урок
- `week` - `week` (VARCHAR(255) NOT NULL) - Номер недели, в которой проходит урок
- `time` - `time` (VARCHAR(255) NOT NULL) - Время урока
### 12. Кафедры (`departments`) ### 12. Кафедры (`departments`)
- `id` (BIGSERIAL, UNIQUE, PRIMARY KEY, NOT NULL) - `id` (BIGSERIAL, UNIQUE, PRIMARY KEY, NOT NULL)