@@ -0,0 +1,223 @@
-- ===============================
-- Создание таблицы кафедр
-- ===============================
CREATE TABLE IF NOT EXISTS departments (
id BIGSERIAL UNIQUE PRIMARY KEY NOT NULL ,
name VARCHAR ( 255 ) NOT NULL ,
code BIGINT UNIQUE NOT NULL
) ;
INSERT INTO departments ( name , code ) VALUES
( ' Кафедра ИБ ' , 1 ) ,
( ' Кафедра В Т ' , 2 ) ,
( ' Кафедра К Т ' , 3 ) ;
COMMENT ON TABLE departments IS ' Кафедры ' ;
-- ===============================
-- Создание таблицы специальностей
-- ===============================
CREATE TABLE IF NOT EXISTS specialties (
id BIGSERIAL PRIMARY KEY ,
name VARCHAR ( 255 ) NOT NULL ,
specialty_code VARCHAR ( 255 ) NOT NULL
) ;
INSERT INTO specialties ( name , specialty_code ) VALUES
( ' Информационная безопасность ' , ' 10.03.01 ' ) ,
( ' Информатика и вычислительная техника ' , ' 09.03.01 ' ) ,
( ' Программная инженерия ' , ' 09.03.04 ' ) ;
COMMENT ON TABLE specialties IS ' Специальности ' ;
-- ===============================
-- Обновление таблицы дисциплин
-- ===============================
ALTER TABLE subjects
ADD COLUMN IF NOT EXISTS department_id BIGINT REFERENCES departments ( id ) ;
UPDATE subjects
SET department_id = 1
WHERE department_id IS NULL ;
ALTER TABLE subjects
ALTER COLUMN department_id SET NOT NULL ;
COMMENT ON TABLE subjects IS ' Дисциплины ' ;
-- ===============================
-- Обновление таблицы групп
-- ===============================
ALTER TABLE student_groups
ADD COLUMN IF NOT EXISTS department_id BIGINT REFERENCES departments ( id ) ;
UPDATE student_groups
SET department_id = 1
WHERE department_id IS NULL ;
ALTER TABLE student_groups
ALTER COLUMN department_id SET NOT NULL ;
COMMENT ON TABLE student_groups IS ' Группы ' ;
-- ===============================
-- Обновление таблицы пользователей
-- ===============================
ALTER TABLE users
ADD COLUMN IF NOT EXISTS full_name VARCHAR ( 255 ) ,
ADD COLUMN IF NOT EXISTS job_title VARCHAR ( 255 ) ,
ADD COLUMN IF NOT EXISTS department_id BIGINT REFERENCES departments ( id ) ;
UPDATE users
SET ( full_name , job_title , department_id ) =
( ' Иванов Админ Иванович ' , ' Доцент ' , 1 )
WHERE id = 1 ;
UPDATE users
SET ( full_name , job_title , department_id ) =
( ' Петров Препод Петрович ' , ' Профессор ' , 2 )
WHERE id = 2 ;
ALTER TABLE users
ALTER COLUMN full_name SET NOT NULL ,
ALTER COLUMN job_title SET NOT NULL ,
ALTER COLUMN department_id SET NOT NULL ;
COMMENT ON TABLE users IS ' Пользователи ' ;
-- ===============================
-- Создание таблицы данных расписания
-- ===============================
CREATE TABLE IF NOT EXISTS schedule_data (
id BIGSERIAL PRIMARY KEY ,
department_id BIGINT NOT NULL REFERENCES departments ( id ) ,
semester INT NOT NULL ,
group_id BIGINT NOT NULL REFERENCES student_groups ( id ) ,
subjects_id BIGINT NOT NULL REFERENCES subjects ( id ) ,
lesson_type_id BIGINT NOT NULL REFERENCES lesson_types ( id ) ,
number_of_hours INT NOT NULL ,
is_division BOOLEAN NOT NULL DEFAULT FALSE ,
teacher_id BIGINT NOT NULL REFERENCES users ( id ) ,
semester_type VARCHAR ( 255 ) NOT NULL ,
period VARCHAR ( 255 ) NOT NULL
) ;
INSERT INTO schedule_data ( department_id , semester , group_id , subjects_id , lesson_type_id , number_of_hours , is_division , teacher_id , semester_type , period )
VALUES ( 1 , 1 , 1 , 1 , 3 , 2 , true , 1 , ' Весенний ' , ' 2024/2025 ' ) ,
( 2 , 4 , 2 , 3 , 2 , 1 , false , 2 , ' Осенний ' , ' 2025/2026 ' ) ,
( 3 , 5 , 1 , 2 , 1 , 3 , true , 1 , ' Весенний ' , ' 2023/2024 ' ) ;
COMMENT ON TABLE schedule_data IS ' Данные к составлению расписания ' ;
COMMENT ON COLUMN schedule_data . department_id IS ' Идентификатор кафедры ' ;
COMMENT ON COLUMN schedule_data . semester IS ' Номер семестра ' ;
COMMENT ON COLUMN schedule_data . group_id IS ' Идентификатор группы ' ;
COMMENT ON COLUMN schedule_data . subjects_id IS ' Идентификатор предмета ' ;
COMMENT ON COLUMN schedule_data . lesson_type_id IS ' Идентификатор типа занятия ' ;
COMMENT ON COLUMN schedule_data . number_of_hours IS ' Количество часов ' ;
COMMENT ON COLUMN schedule_data . is_division IS ' Является ли занятие разделенным ' ;
COMMENT ON COLUMN schedule_data . teacher_id IS ' Идентификатор преподавателя ' ;
COMMENT ON COLUMN schedule_data . semester_type IS ' Тип семестра (Весенний, Осенний) ' ;
COMMENT ON COLUMN schedule_data . period IS ' Период занятий (год/год) ' ;
COMMENT ON TABLE education_forms IS ' Формы обучения ' ;
COMMENT ON TABLE subgroups IS ' Подгруппы ' ;
COMMENT ON TABLE lesson_types IS ' Типы занятий ' ;
COMMENT ON TABLE equipments IS ' Оборудование ' ;
COMMENT ON TABLE classrooms IS ' Аудитории ' ;
COMMENT ON TABLE classroom_equipments IS ' Привязка оборудования к аудиториям ' ;
COMMENT ON TABLE teacher_subjects IS ' Привязка преподавателей к дисциплинам ' ;
COMMENT ON TABLE teacher_lesson_types IS ' Типы занятий преподавателя ' ;
COMMENT ON COLUMN users . id IS ' ID пользователя ' ;
COMMENT ON COLUMN users . username IS ' Логин пользователя ' ;
COMMENT ON COLUMN users . password IS ' Хэш пароля пользователя ' ;
COMMENT ON COLUMN users . role IS ' Роль пользователя ' ;
COMMENT ON COLUMN users . created_at IS ' Дата и время создания ' ;
COMMENT ON COLUMN users . updated_at IS ' Дата и время последнего обновления ' ;
COMMENT ON COLUMN education_forms . id IS ' ID формы обучения ' ;
COMMENT ON COLUMN education_forms . name IS ' Название формы обучения ' ;
COMMENT ON COLUMN education_forms . description IS ' Описание ' ;
COMMENT ON COLUMN education_forms . created_at IS ' Дата и время создания ' ;
COMMENT ON COLUMN student_groups . id IS ' ID учебной группы ' ;
COMMENT ON COLUMN student_groups . name IS ' Название группы ' ;
COMMENT ON COLUMN student_groups . group_size IS ' Количество студентов ' ;
COMMENT ON COLUMN student_groups . education_form_id IS ' ID формы обучения, к которой относится группа ' ;
COMMENT ON COLUMN student_groups . course IS ' К у р с ' ;
COMMENT ON COLUMN student_groups . created_at IS ' Дата и время создания ' ;
COMMENT ON COLUMN subgroups . id IS ' ID подгруппы ' ;
COMMENT ON COLUMN subgroups . group_id IS ' ID учебной группы, к которой относится подгруппа ' ;
COMMENT ON COLUMN subgroups . name IS ' Название подгруппы ' ;
COMMENT ON COLUMN subgroups . student_capacity IS ' Количество студентов в подгруппе ' ;
COMMENT ON COLUMN subjects . id IS ' ID предмета ' ;
COMMENT ON COLUMN subjects . name IS ' Название предмета ' ;
COMMENT ON COLUMN subjects . code IS ' Код предмета ' ;
COMMENT ON COLUMN subjects . description IS ' Описание предмета ' ;
COMMENT ON COLUMN subjects . created_at IS ' Дата и время создания ' ;
COMMENT ON COLUMN lesson_types . id IS ' ID урока ' ;
COMMENT ON COLUMN lesson_types . name IS ' Название типа урока ' ;
COMMENT ON COLUMN lesson_types . color_code IS ' Цветовой код для типа урока ' ;
COMMENT ON COLUMN lesson_types . duration_minutes IS ' Длительность урока в минутах ' ;
COMMENT ON COLUMN equipments . id IS ' ID оборудования ' ;
COMMENT ON COLUMN equipments . name IS ' Название оборудования ' ;
COMMENT ON COLUMN equipments . description IS ' Описание оборудования ' ;
COMMENT ON COLUMN equipments . inventory_number IS ' Инвентарный номер оборудования ' ;
COMMENT ON COLUMN classrooms . id IS ' ID аудитории ' ;
COMMENT ON COLUMN classrooms . name IS ' Название аудитории ' ;
COMMENT ON COLUMN classrooms . capacity IS ' Вместимость аудитории ' ;
COMMENT ON COLUMN classrooms . building IS ' Корпус ' ;
COMMENT ON COLUMN classrooms . floor IS ' Этаж ' ;
COMMENT ON COLUMN classrooms . is_available IS ' Доступность аудитории ' ;
COMMENT ON COLUMN classrooms . description IS ' Описание аудитории ' ;
COMMENT ON COLUMN classrooms . created_at IS ' Дата и время создания ' ;
COMMENT ON COLUMN classroom_equipments . classroom_id IS ' ID аудитории ' ;
COMMENT ON COLUMN classroom_equipments . equipment_id IS ' ID оборудования ' ;
COMMENT ON COLUMN classroom_equipments . quantity IS ' Дата и время создания ' ;
COMMENT ON COLUMN classroom_equipments . notes IS ' Примечания к записи ' ;
COMMENT ON COLUMN teacher_subjects . user_id IS ' ID преподавателя ' ;
COMMENT ON COLUMN teacher_subjects . subject_id IS ' ID предмета ' ;
COMMENT ON COLUMN teacher_subjects . qualification_level IS ' Уровень квалификации преподавателя ' ;
COMMENT ON COLUMN teacher_subjects . experience_years IS ' Опыт преподавания ' ;
COMMENT ON COLUMN lessons . id IS ' ID урока ' ;
COMMENT ON COLUMN lessons . teacher_id IS ' Идентификатор преподавателя, который проводит урок ' ;
COMMENT ON COLUMN lessons . group_id IS ' ID группы, в которой проходит урок ' ;
COMMENT ON COLUMN lessons . subject_id IS ' ID предмета, который преподается ' ;
COMMENT ON COLUMN lessons . lesson_format IS ' Формат урока ' ;
COMMENT ON COLUMN lessons . type_lesson IS ' Тип урока ' ;
COMMENT ON COLUMN lessons . classroom_id IS ' ID аудитории, в которой проходит урок ' ;
COMMENT ON COLUMN lessons . day IS ' День недели, в который проходит урок ' ;
COMMENT ON COLUMN lessons . week IS ' Номер недели, в которой проходит урок ' ;
COMMENT ON COLUMN lessons . time IS ' Время урока ' ;
COMMENT ON COLUMN departments . id IS ' ID кафедры ' ;
COMMENT ON COLUMN departments . name IS ' Название кафедры ' ;
COMMENT ON COLUMN departments . code IS ' Код кафедры ' ;
COMMENT ON COLUMN specialties . id IS ' ID специальности ' ;
COMMENT ON COLUMN specialties . name IS ' Название специальности ' ;
COMMENT ON COLUMN specialties . specialty_code IS ' Код специальности ' ;
COMMENT ON COLUMN teacher_lesson_types . user_id IS ' ID преподавателя ' ;
COMMENT ON COLUMN teacher_lesson_types . subject_id IS ' ID предмета ' ;
COMMENT ON COLUMN teacher_lesson_types . lesson_type_id IS ' ID типа занятия ' ;
COMMENT ON COLUMN schedule_data . id IS ' ID записи данных расписания ' ;
COMMENT ON COLUMN subjects . department_id IS ' ID кафедры ' ;
COMMENT ON COLUMN student_groups . department_id IS ' ID кафедры ' ;
COMMENT ON COLUMN users . full_name IS ' ФИО пользователя ' ;
COMMENT ON COLUMN users . job_title IS ' Должность пользователя ' ;
COMMENT ON COLUMN users . department_id IS ' ID кафедры ' ;