Домашнее задание - Практическое занятие №10: управление проектом, этап 2

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

Назначение резервного задания: Данное задание предназначено для самостоятельного освоения и дистанционной сдачи практического этапа версионирования схемы базы данных, разработки миграций Flyway и регрессионного тестирования (в случае пропуска аудиторного занятия или по индивидуальному графику обучения).

Задание 1. Разработка скрипта прямой миграции (Forward Migration)

В рамках релиза корпоративной системы управления проектами требуется модифицировать схему базы данных. Исходная таблица сотрудников содержит базовую информацию:

CREATE TABLE project_employees (
    employee_id SERIAL PRIMARY KEY,
    full_name VARCHAR(120) NOT NULL,
    department VARCHAR(50) NOT NULL,
    salary NUMERIC(10, 2) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Постановка задачи релиза v2.1:

  1. Создать отдельную справочную таблицу отделов company_departments (dept_id SERIAL PRIMARY KEY, dept_name VARCHAR(50) NOT NULL UNIQUE, head_officer VARCHAR(120) NOT NULL).
  2. Заполнить таблицу начальными данными (Отдел разработки, Бухгалтерия, Отдел продаж).
  3. Добавить в таблицу project_employees внешний ключ dept_id, ссылающийся на company_departments(dept_id).
  4. Требование Zero-Downtime: Новое поле dept_id не должно ломать старые операции вставки! Предусмотреть значение по умолчанию для существующих и новых сотрудников.

Задание 2. Разработка скрипта обратного отката (Undo Migration)

Смоделируйте сценарий отката релиза (Rollback) в случае выявления критических дефектов интеграции. Скрипт отката должен вернуть схему базы данных к исходному состоянию версии 1.0.

Требования к скрипту отката:

Задание 3. Заполнение метаданных в системной таблице версий

Сформируйте SQL-запрос INSERT INTO flyway_schema_history, который регистрирует применение вашей прямой миграции V2_1__add_company_departments.sql со следующими параметрами: порядковый номер installed_rank = 2, контрольная сумма хэша checksum = 148920195, время выполнения execution_time = 45 мс, статус success = TRUE.

Задание 4. Протокол регрессионного тестирования клиентского ПО

Составьте протокол регрессионного теста, подтверждающий обратную совместимость старого клиентского модуля добавления сотрудников (модуль v1.0, который отправляет только full_name, department и salary, ничего не зная о dept_id).

Опишите тестовый запрос и ожидаемый результат работы СУБД:

✓ Данные успешно сохранены в LocalStorage