Практическое занятие №5: записи и логические условия
ОП.08 Основы проектирования баз данных • Сургутский институт экономики, управления и права (СИЭУиП)
Вариант 1 База данных «Интернет-аптека»
Задание: В связи с сезонной инфляцией требуется повысить отпускную розничную цену на 10% (price = ROUND(price * 1.10, 2)) для лекарственных препаратов категории 'Витамины', текущий складской остаток которых находится в диапазоне BETWEEN 5 AND 50, и срок годности превышает '2026-12-31'.
Шаг 2. Запрос модификации данных (DML с транзакцией)
Шаг 3. Протокол аудита изменений (Состояние строк ДО и ПОСЛЕ)
Шаг 4. Анализ трехзначной логики SQL (3VL)
Вариант 2 База данных «Автосалон»
Задание: В связи с корпоративным заказом перевести в статус 'Забронирован' автомобили марки 'Toyota' ИЛИ 'Lexus', год выпуска которых >= 2023, а пробег строго менее 15000 км. Внимание к приоритету логических связок OR и AND!
Исходное состояние отношения dealership_cars:
ID (car_id)
Модель автомобиля
Марка (brand)
Год выпуска (year_manufactured)
Пробег, км (mileage)
Текущий статус (status)
101
Camry 2.5 Prestige
Toyota
2023
12000
В наличии
102
RX 350 Luxury AWD
Lexus
2024
8500
В наличии
103
Corolla 1.6 Comfort
Toyota
2021
14000
В наличии
104
ES 250 Premium
Lexus
2023
18500
В наличии
105
Solaris 1.6 Active
Hyundai
2023
9000
В наличии
Шаг 1. Проверочный SELECT-запрос (с круглыми скобками)
Шаг 2. Транзакционный запрос UPDATE
Шаг 3. Протокол аудита изменений (ДО / ПОСЛЕ)
Шаг 4. Анализ риска логической ошибки
Вариант 3 База данных «Кадровое агентство»
Задание: Обновить статус доступности соискателей на 'Готов к офферу' для кандидатов с грейдом IN ('Senior', 'Lead'), владеющих компетенцией 'PostgreSQL' (проверка через шаблон LIKE '%PostgreSQL%') и у которых отсутствует факт текущего найма (hire_date IS NULL).
Исходное состояние отношения job_candidates:
ID (candidate_id)
ФИО соискателя
Грейд (experience_level)
Стек технологий (skills)
Дата найма (hire_date)
Текущий статус (status)
201
Смирнов А.В.
Senior
PostgreSQL, Go, Docker, Linux
NULL
В поиске
202
Ковалева Е.И.
Lead
Java, Spring, PostgreSQL, K8s
NULL
В поиске
203
Васильев П.С.
Senior
PostgreSQL, Python, Redis
2026-02-15
Трудоустроен
204
Морозов Д.А.
Middle
PostgreSQL, C++, Git
NULL
В поиске
205
Кузнецова О.Н.
Lead
JavaScript, React, Node.js
NULL
В поиске
Шаг 1. Проверочный SELECT-запрос
Шаг 2. Транзакционный запрос UPDATE
Шаг 3. Протокол аудита изменений (ДО / ПОСЛЕ)
Шаг 4. Анализ трехзначной логики при проверке NULL
Вариант 4 База данных «Складской терминал»
Задание: Провести рекламацию и переместить в статус 'Утилизация' партии стройматериалов поставщика 'Логистик-Групп', если у них зафиксирован производственный брак (defect_count > 0) ИЛИ срок нахождения на складе превышает норматив (storage_days > 180 дней).