Практическое занятие №5: записи и логические условия

ОП.08 Основы проектирования баз данных • Сургутский институт экономики, управления и права (СИЭУиП)

Вариант 1 База данных «Интернет-аптека»

Задание: В связи с сезонной инфляцией требуется повысить отпускную розничную цену на 10% (price = ROUND(price * 1.10, 2)) для лекарственных препаратов категории 'Витамины', текущий складской остаток которых находится в диапазоне BETWEEN 5 AND 50, и срок годности превышает '2026-12-31'.

Исходное состояние отношения pharmacy_products:

ID (product_id) Наименование товара Категория (category) Остаток (stock_quantity) Цена, руб. (price) Срок годности (expiration_date)
1Аскорбинка с глюкозой 50гВитамины25120.002027-05-01
2Витамин D3 2000 ME капс.Витамины4450.002027-10-15
3Омега-3 Форте комплексВитамины15800.002026-11-20
4Поливитамины Актив 60 таб.Витамины50600.002028-01-10
5Ибупрофен 400мг обезбол.Обезболивающие30150.002027-12-31

Шаг 1. Проверочный SELECT-запрос (предпросмотр выборки)

Шаг 2. Запрос модификации данных (DML с транзакцией)

Шаг 3. Протокол аудита изменений (Состояние строк ДО и ПОСЛЕ)

Шаг 4. Анализ трехзначной логики SQL (3VL)

Вариант 2 База данных «Автосалон»

Задание: В связи с корпоративным заказом перевести в статус 'Забронирован' автомобили марки 'Toyota' ИЛИ 'Lexus', год выпуска которых >= 2023, а пробег строго менее 15000 км. Внимание к приоритету логических связок OR и AND!

Исходное состояние отношения dealership_cars:

ID (car_id) Модель автомобиля Марка (brand) Год выпуска (year_manufactured) Пробег, км (mileage) Текущий статус (status)
101Camry 2.5 PrestigeToyota202312000В наличии
102RX 350 Luxury AWDLexus20248500В наличии
103Corolla 1.6 ComfortToyota202114000В наличии
104ES 250 PremiumLexus202318500В наличии
105Solaris 1.6 ActiveHyundai20239000В наличии

Шаг 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Смирнов А.В.SeniorPostgreSQL, Go, Docker, LinuxNULLВ поиске
202Ковалева Е.И.LeadJava, Spring, PostgreSQL, K8sNULLВ поиске
203Васильев П.С.SeniorPostgreSQL, Python, Redis2026-02-15Трудоустроен
204Морозов Д.А.MiddlePostgreSQL, C++, GitNULLВ поиске
205Кузнецова О.Н.LeadJavaScript, React, Node.jsNULLВ поиске

Шаг 1. Проверочный SELECT-запрос

Шаг 2. Транзакционный запрос UPDATE

Шаг 3. Протокол аудита изменений (ДО / ПОСЛЕ)

Шаг 4. Анализ трехзначной логики при проверке NULL

Вариант 4 База данных «Складской терминал»

Задание: Провести рекламацию и переместить в статус 'Утилизация' партии стройматериалов поставщика 'Логистик-Групп', если у них зафиксирован производственный брак (defect_count > 0) ИЛИ срок нахождения на складе превышает норматив (storage_days > 180 дней).

Исходное состояние отношения warehouse_stock:

ID (item_id) Номенклатура Поставщик (supplier) Кол-во дефектов (defect_count) Дней на складе (storage_days) Статус партии (status)
301Профиль стальной L-20Логистик-Групп245На складе
302Утеплитель Минвата 50Логистик-Групп0210На складе
303Арматура 12мм А500Логистик-Групп090На складе
304Кабель ВВГнг 3х2.5Север-Снаб5250На складе
305Крепеж анкерный 10х100Логистик-Групп1195На складе

Шаг 1. Проверочный SELECT-запрос

Шаг 2. Транзакционный запрос UPDATE

Шаг 3. Протокол аудита изменений (ДО / ПОСЛЕ)

Шаг 4. Анализ дизъюнкции и приоритета AND/OR

Все изменения сохраняются автоматически