Домашнее задание - Создание, модификация и удаление таблиц

Выполняйте только если преподаватель назначил это задание. Срок сдачи сообщит преподаватель.

Индивидуальное резервное задание по дисциплине «ОП.08 Основы проектирования баз данных» (СИЭУиП). Написание комплексного DDL-скрипта изменения структуры реляционной базы данных с контролем ссылочной целостности и ограничений.

1. Создание базовой сущности и ограничения (CREATE TABLE)

Техническое задание: Создайте таблицу транспортных компаний-партнеров logistics_partners с поддержкой идемпотентности (IF NOT EXISTS):
  • partner_id — суррогатный первичный ключ (SERIAL PRIMARY KEY);
  • inn — строка из 12 символов (VARCHAR(12)), обязательное уникальное поле (NOT NULL UNIQUE);
  • company_name — наименование юридического лица (VARCHAR(150) NOT NULL);
  • rating — числовой рейтинг надежности (NUMERIC(3, 2) NOT NULL DEFAULT 5.00), значение должно находиться в диапазоне от 0.00 до 5.00 (ограничение CHECK);
  • is_active — признак активности контрагента (BOOLEAN NOT NULL DEFAULT TRUE).

2. Комплексная миграция структуры (ALTER TABLE с USING)

Исходный контекст: В базе данных существует таблица грузовых маршрутов:
CREATE TABLE freight_routes (
    route_id SERIAL PRIMARY KEY,
    partner_id INT NOT NULL,
    route_name VARCHAR(100) NOT NULL,
    driver VARCHAR(100) NOT NULL,
    base_rate INTEGER NOT NULL
);
Требования к миграции:
  1. Добавить столбец максимальной грузоподъемности max_weight_kg NUMERIC(8, 2) NOT NULL DEFAULT 1500.00.
  2. Переименовать столбец driver в assigned_driver_fio.
  3. Изменить тип данных столбца base_rate с INTEGER на NUMERIC(12, 2) с обязательным явным преобразованием через выражение USING.
  4. Добавить внешний ключ fk_freight_routes_partner, связывающий partner_id с таблицей logistics_partners(partner_id) с защитной опцией ON DELETE RESTRICT.

3. Высокоскоростная очистка и каскадное удаление (TRUNCATE и DROP)

Техническое задание:
  1. Напишите команду высокоскоростной очистки буферной таблицы buffer_delivery с обязательным сбросом счетчика автоинкремента в начальное значение 1 (RESTART IDENTITY).
  2. Напишите команду безопасного удаления устаревшей архивной таблицы legacy_freight_archive с автоматическим снятием всех зависимых внешних ключей и представлений (CASCADE).
  3. В текстовом поле ниже объясните, чем операция TRUNCATE TABLE ... RESTART IDENTITY принципиально отличается от DELETE FROM ..., и почему в production-системах каскадный DROP TABLE ... CASCADE несет серьезные риски для целостности схемы.
Данные сохранены в браузере!