diff --git a/Database.md b/Database.md index 6890c14..24eb1ea 100644 --- a/Database.md +++ b/Database.md @@ -18,7 +18,7 @@ description: Полное описание схемы базы данных пр - `updated_at` - `full_name` - `job_title` -- `departement_id` +- `department_id` ### 2. Формы обучения (`education_forms`) Справочник форм обучения. @@ -31,59 +31,107 @@ description: Полное описание схемы базы данных пр Справочник учебных групп. - `id` (BIGSERIAL, РК) - `name` (VARCHAR(100), UNIQUE, NOT NULL) - название группы (например, 'ИВТ-21-1') +- `group_size` - `education_form_id` (BIGINT, FK -> education_forms.id) - привязка к форме обучения +- `course` +- `created_at` +- `department_id` ### 4. Подгруппы (`subgroups`) Разделение групп на подгруппы (для лабораторных и практик). - `id` (BIGSERIAL, РК) - `group_id` (BIGINT, FK -> student_groups.id) - `name` (VARCHAR(100), NOT NULL) - название подгруппы (например, 'Подгруппа 1') +- `student_capacity` ### 5. Дисциплины (`subjects`) Справочник учебных предметов. - `id` (BIGSERIAL, РК) - `name` (VARCHAR(200), UNIQUE, NOT NULL) - название дисциплины (например, 'Высшая математика') +- `code` +- `description` +- `created_at` +- `department_id` ### 6. Типы занятий (`lesson_types`) Справочник видов учебных занятий. - `id` (BIGSERIAL, РК) - `name` (VARCHAR(50), UNIQUE, NOT NULL) - вид занятия (Лекция, Практика, Лабораторная работа) +- `color_code` +- `duration_minutes` ### 7. Оборудование (`equipments`) Справочник доступного оборудования для аудиторий. - `id` (BIGSERIAL, РК) - `name` (VARCHAR(50), UNIQUE, NOT NULL) - например, 'Проектор', 'ПК', 'Лаборатория', 'Интерактивная доска' +- `description` +- `inventory_number` ### 8. Аудиторный фонд (`classrooms`) Справочник аудиторий университета. - `id` (BIGSERIAL, РК) - `name` (VARCHAR(50), UNIQUE, NOT NULL) - номер/название аудитории - `capacity` (INT, NOT NULL) - вместимость (количество посадочных мест) +- `building` +- `floor` - `is_available` (BOOLEAN, DEFAULT TRUE) - статус доступности аудитории для проведения пар +- `description` +- `created_at` ### 9. Привязка оборудования к аудиториям (`classroom_equipments`) Связующая таблица (Many-to-Many) для указания, какое оборудование есть в аудитории. - `classroom_id` (BIGINT, FK -> classrooms.id) - `equipment_id` (BIGINT, FK -> equipments.id) +- `quantity` +- `notes` ### 10. Привязка преподавателей к дисциплинам (`teacher_subjects`) Связующая таблица (Many-to-Many). Определяет, какие предметы имеет право вести преподаватель. - `user_id` (BIGINT, FK -> users.id) - `subject_id` (BIGINT, FK -> subjects.id) +- `qualification_level` +- `experience_years` ### 11. Расписание занятий (Пар) (`lessons`) Главная таблица, хранящая сетку расписания. Связывает все основные сущности в рамках одного учебного занятия. - `id` (BIGSERIAL, РК) - `teacher_id` (BIGINT, FK -> users.id) - кто ведет пару +- `group_id` - `subject_id` (BIGINT, FK -> subjects.id) - какую дисциплину ведут -- `lesson_type_id` (BIGINT, FK -> lesson_types.id) - вид занятия (лекция/практика) -- `classroom_id` (BIGINT, FK -> classrooms.id) - где проходит -- `group_id` (BIGINT, FK -> student_groups.id) - у какой группы -- `subgroup_id` (BIGINT, FK -> subgroups.id, NULLABLE) - конкретная подгруппа (если пара не у всей группы) -- `day_of_week` (INT, NOT NULL) - день недели (1=Понедельник ... 7=Воскресенье) -- `is_even_week` (BOOLEAN, NOT NULL) - признак четности недели (TRUE = четная, FALSE = нечетная) -- `start_time` (TIME, NOT NULL) - время начала пары (например: '08:00:00') -- `end_time` (TIME, NOT NULL) - время окончания пары (например: '09:30:00') +- `lesson_format` +- `type_lesson` +- `classroom_id` +- `day` +- `week` +- `time` + +### 12. Кафедры (`departments`) +`id` (BIGSERIAL, UNIQUE, PRIMARY KEY, NOT NULL) +`name` (VARCHAR(255), NOT NULL) - название кафедры +`code` (BIGINT, UNIQUE, NOT NULL) + + +### 13. Данные к составлению расписания (`schedule_data`) +`id` (BIGSERIAL, PRIMARY KEY) +`department_id` (BIGINT, NOT NULL) - Идентификатор кафедры +`semester` (INT, NOT NULL) - Номер семестра +`group_id` (BIGINT, NOT NULL) - Идентификатор группы +`subjects_id` (BIGINT, NOT NULL) - Идентификатор предмета +`lesson_type_id` (BIGINT, NOT NULL) - Идентификатор типа занятия +`number_of_hours` (INT, NOT NULL) - Количество часов +`is_division` (BOOLEAN, DEFAULT, NOT NULL) - Является ли занятие разделенным +`teacher_id` (BIGINT, NOT NULL) - Идентификатор преподавателя +`semester_type` (VARCHAR(255), NOT NULL) - Тип семестра (Весенний, Осенний) +`period` (VARCHAR(255), NOT NULL) - период занятий (год/год) + +### 14. (`flyway_schema_history`) + + +### 15. (`specialties`) +`id` (BIGSERIAL, PRIMARY KEY) +`name` (VARCHAR(255), NOT NULL) +`specialty_code` (VARCHAR(255), NOT NULL) + ## Особенности архитектуры БД - Используется расширение `pgcrypto` для шифрования паролей пользователей (`bcrypt`).