Интерактивный рабочий лист: Практическое занятие №10: управление проектом, этап 2

ОП.08 Основы проектирования баз данных • Тема 4 (§2.2 с.7–8) • Занятие №28
Выберите практический сценарий (Вариант):

Вариант 1. Складской комплекс: Версионирование V2 и регрессионный тест

Контекст предметной области: В эксплуатируемой складской базе данных действует базовая таблица товаров Товары (product_id, title, category, price_rub, stock_qty). В рамках релиза v2 требуется добавить поддержку штрихкодирования: новую колонку Штрихкод_EAN13 (13 символов) с ограничением уникальности UNIQUE.
Критическое требование: В таблице уже содержится более 10 000 товаров без штрихкодов. Добавление колонки не должно нарушить работу старых складских терминалов, выполняющих поиск по названию и артикулу, а также создание товаров без немедленного присвоения штрихкода.

Задание 1.1. Разработка скрипта прямой миграции (V2__add_barcode_ean13.sql)

Разработайте безопасный DDL-скрипт добавления колонки barcode_ean13 и уникального индекса/ограничения, сохраняющий возможность вставки товаров со значением NULL или дефолтным плейсхолдером:

Задание 1.2. Разработка скрипта отката (U2__drop_barcode_ean13.sql)

Напишите зеркальный Undo-скрипт, возвращающий таблицу товаров к состоянию версии 1.0 (с удалением индекса и колонки):

Задание 1.3. Регистрация миграции в flyway_schema_history

Составьте строку INSERT для фиксации применения миграции V2 в служебной таблице версий (installed_rank = 2, version = '2', description = 'add barcode ean13', checksum = 87419203, success = true):

Задание 1.4. Протокол регрессионного тестирования старых форм поиска и вставки

Опишите 2 тестовых сценария: 1) выполнение старого поискового SELECT-запроса терминала сбора данных (TSD); 2) выполнение операции INSERT нового товара без указания штрихкода. Укажите ожидаемые результаты:

1) Почему уникальное ограничение (UNIQUE) в реляционных базах данных допускает множество значений NULL?
2) Что произойдет с операцией наката, если применить команду ADD COLUMN barcode VARCHAR(13) NOT NULL UNIQUE; без DEFAULT на таблице с 10 000 записей?

✓ Все изменения успешно сохранены в LocalStorage