Индивидуальное резервное задание по дисциплине «ОП.08 Основы проектирования баз данных» (СИЭУиП). Написание комплексного DDL-скрипта изменения структуры реляционной базы данных с контролем ссылочной целостности и ограничений.
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).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
);
Требования к миграции:
max_weight_kg NUMERIC(8, 2) NOT NULL DEFAULT 1500.00.driver в assigned_driver_fio.base_rate с INTEGER на NUMERIC(12, 2) с обязательным явным преобразованием через выражение USING.fk_freight_routes_partner, связывающий partner_id с таблицей logistics_partners(partner_id) с защитной опцией ON DELETE RESTRICT.buffer_delivery с обязательным сбросом счетчика автоинкремента в начальное значение 1 (RESTART IDENTITY).legacy_freight_archive с автоматическим снятием всех зависимых внешних ключей и представлений (CASCADE).TRUNCATE TABLE ... RESTART IDENTITY принципиально отличается от DELETE FROM ..., и почему в production-системах каскадный DROP TABLE ... CASCADE несет серьезные риски для целостности схемы.