/
sudz1
/
sql
Обзор
Документация
Войти
/
sudz1
/
sql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
2 2.sql
115 строк
7 KB
sudz1
w
21 мар 2026, 12:34
Верифицирован
21 мар 2026, 12:34
bdaa2c8
Код
Авторство
О чём код?
CREATE DATABASE university WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' LOCALE_PROVIDER = 'libc' TABLESPACE = pg_default CONNECTION LIMIT = -1 IS_TEMPLATE = False; CREATE TABLE IF NOT EXISTS disciplines ( id SERIAL PRIMARY KEY, disciplines_name VARCHAR(200) NOT NULL, description TEXT, disciplines_total_hours SMALLINT NOT NULL CHECK (disciplines_total_hours > 0 AND disciplines_total_hours <= 1000), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS collegegroups ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL UNIQUE, course SMALLINT NOT NULL CHECK (course BETWEEN 1 AND 6), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS schedule ( id SERIAL PRIMARY KEY, teacher_first_name VARCHAR(50) NOT NULL, teacher_last_name VARCHAR(50) NOT NULL, teacher_middle_name VARCHAR(50) NOT NULL, day_of_week SMALLINT NOT NULL CHECK (day_of_week BETWEEN 1 AND 7), class_start_time TIME WITHOUT TIME ZONE NOT NULL, class_end_time TIME WITHOUT TIME ZONE NOT NULL, classroom_number VARCHAR(50) NOT NULL, discipline_id INTEGER NOT NULL REFERENCES disciplines(id) ON DELETE RESTRICT, group_id INTEGER NOT NULL REFERENCES collegegroups(id) ON DELETE RESTRICT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ALTER TABLE schedule ADD CONSTRAINT fk_schedule_discipline FOREIGN KEY (discipline_id) REFERENCES disciplines(id) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE schedule ADD CONSTRAINT fk_schedule_collegegroup FOREIGN KEY (collegegroup_id) REFERENCES collegegroups(id) ON DELETE SET NULL ON UPDATE CASCADE; CREATE INDEX idx_schedule_collegegroup ON schedule(collegegroup_id); CREATE INDEX idx_schedule_discipline ON schedule(discipline_id); CREATE INDEX idx_schedule_day_time ON schedule (day_of_week, class_start_time); COMMENT ON TABLE disciplines IS 'Таблица с дисциплинами'; COMMENT ON TABLE collegegroups IS 'Таблица групп в колледже'; COMMENT ON TABLE schedule IS 'Таблица с расписанием'; COMMENT ON COLUMN disciplines.id IS 'Уникальный идентификатор дисциплины (первичный ключ)'; COMMENT ON COLUMN disciplines.disciplines_name IS 'Название дисциплины'; COMMENT ON COLUMN disciplines.description IS 'Описание дисциплины, программы'; COMMENT ON COLUMN disciplines.disciplines_total_hours IS 'Общее количество учебных часов по дисциплине'; COMMENT ON COLUMN disciplines.created_at IS 'Дата и время создания записи'; COMMENT ON COLUMN disciplines.updated_at IS 'Дата и время последнего обновления записи'; COMMENT ON COLUMN collegegroups.id IS 'Уникальный идентификатор учебной группы (первичный ключ)'; COMMENT ON COLUMN collegegroups.name IS 'Название группы'; COMMENT ON COLUMN collegegroups.course IS 'Курс обучения (от 1 до 6)'; COMMENT ON COLUMN collegegroups.created_at IS 'Дата и время создания записи'; COMMENT ON COLUMN collegegroups.updated_at IS 'Дата и время последнего обновления записи'; COMMENT ON COLUMN schedule.id IS 'Уникальный идентификатор записи расписания (первичный ключ)'; COMMENT ON COLUMN schedule.teacher_first_name IS 'Имя преподавателя'; COMMENT ON COLUMN schedule.teacher_last_name IS 'Фамилия преподавателя'; COMMENT ON COLUMN schedule.teacher_middle_name IS 'Отчество преподавателя'; COMMENT ON COLUMN schedule.day_of_week IS 'День недели'; COMMENT ON COLUMN schedule.class_start_time IS 'Время начала занятия'; COMMENT ON COLUMN schedule.class_end_time IS 'Время окончания занятия'; COMMENT ON COLUMN schedule.classroom_number IS 'Номер аудитории'; COMMENT ON COLUMN schedule.discipline_id IS 'Идентификатор дисциплины из таблицы disciplines'; COMMENT ON COLUMN schedule.group_id IS 'Идентификатор группы из таблицы collegegroups'; COMMENT ON COLUMN schedule.created_at IS 'Дата и время создания записи'; COMMENT ON COLUMN schedule.updated_at IS 'Дата и время последнего обновления записи'; COMMENT ON CONSTRAINT fk_schedule_discipline ON schedule IS 'Внешний ключ связывающий дисциплины с расписанием. Обеспечивает целостность данных: расписание может ссылаться только на существующие дисциплины. При удалении дисциплины в расписании discipline_id устанавливается в NULL. При изменении дисциплины расписание обновляется автоматически.'; COMMENT ON CONSTRAINT fk_schedule_collegegroup ON schedule IS 'Внешний ключ связывающий группы в колледже с расписанием. Обеспечивает целостность данных: группы в колледже могут ссылаться только на существующее расписание. При удалении расписания в группах колледжа collegegroup_id устанавливается в NULL. При изменении групп колледжа расписание обновляется автоматически.'; COMMENT ON INDEX idx_schedule_collegegroup IS 'Индекс для ускорения поиска расписания по группе. Улучшает производительность запросов с JOIN или WHERE по collegegroup_id. Создан на столбце collegegroup_id таблицы schedule.'; COMMENT ON INDEX idx_schedule_discipline IS 'Индекс для ускорения поиска расписания по дисциплине. Улучшает производительность запросов с JOING или WHERE по discipline_id. Создан на столбце discipline_id таблицы schedule.'; COMMENT ON INDEX idx_schedule_day_time IS 'Индекс для ускорения поиска расписания по дню недели и времени. Улучшает производительность запросов с JOING или WHERE по day_time_id. Создан на столбце day_time_id таблицы schedule.';