Задание 3 ЕГЭ по информатике: базы данных — разбор и алгоритм
Подтемы
- Задания для подготовки63 задач
Что проверяет задание
Задание 3 проверяет умение работать с реляционной базой данных, состоящей из нескольких связанных таблиц. Нужно понять структуру схемы БД (какие поля являются ключами, как таблицы связаны друг с другом), выбрать из большого массива записей только те, что удовлетворяют условию задачи, и правильно посчитать числовой результат — остаток товара, массу, сумму в рублях или количество операций.
По сути это мини-задача на фильтрацию и агрегацию данных: нужно применить несколько условий одновременно (товар, магазин или район, период дат, тип операции) и выполнить арифметическую операцию — сложение, вычитание, умножение. Ошибка в любом из условий фильтрации даёт неверный числовой ответ, поэтому задание требует аккуратности и последовательности действий, а не сложных знаний SQL.
Как выглядит формулировка и сколько баллов
К заданию прилагается файл с базой данных (обычно электронная таблица с несколькими листами-таблицами) и схема связей между таблицами. В условии описывается предметная область — например, поставки товаров в магазины — и структура каждой таблицы: перечень полей и их назначение.
Вопрос всегда сформулирован как просьба определить конкретное число: сколько единиц товара продано, на сколько увеличился остаток, сколько рублей потрачено. Ответом служит одно число (иногда с допустимой записью через запятую или точку). Задание относится к базовому уровню сложности, оценивается в 1 балл, а его выполнение занимает 3–5 минут при условии, что вы умеете быстро фильтровать данные в таблице.
Что нужно знать
- Реляционная база данных — совокупность таблиц, связанных между собой через общие поля (ключи).
- Первичный ключ (PK) — поле, значения которого уникальны для каждой записи таблицы (например, ID операции, Артикул, ID магазина).
- Внешний ключ (FK) — поле, которое ссылается на первичный ключ другой таблицы и связывает записи между таблицами.
- Связь «один ко многим» — одной записи в главной таблице (например, один магазин) соответствует много записей в подчинённой таблице (много операций по этому магазину).
- Остаток товара на складе/в магазине вычисляется как разница суммарных поступлений и продаж за период:
- Перевод количества упаковок в массу или штуки через поле «Количество в упаковке» :
- Стоимость операции, если цена указана за штуку, а количество — в упаковках:
- Диапазон дат «с… по… включительно» означает, что обе границы периода входят в выборку.
- Тип операции (Поступление/Продажа) — обязательное условие фильтрации, если в задаче речь идёт только об одном из этих действий.
Методы решения
1. Метод связывания таблиц по ключам. Чтобы найти магазины нужного района, сначала ищут в таблице «Магазин» все ID магазинов с этим районом, а затем эти ID используют как условие фильтрации в таблице операций. Пример: район «Северный» соответствует ID магазинов 3, 7, 12 — именно эти три идентификатора далее ищутся в таблице движения товаров.
2. Метод последовательной фильтрации. Условия задачи разбиваются на отдельные критерии (товар, магазин, дата, тип операции), и каждый применяется по очереди, сужая список записей. Пример: сначала оставляем только строки с нужным артикулом, затем — только с нужными ID магазинов, затем — только за указанные даты.
3. Метод баланса «поступление минус продажа». Используется, когда нужно найти изменение остатка за период. Отдельно суммируются все поступления, отдельно все продажи, затем берётся разность. Пример: поступило 1500 упаковок, продано 534 — остаток увеличился на 966.
4. Метод перевода единиц измерения. Если вопрос требует ответ в килограммах или штуках, а в таблице операций количество указано в упаковках, нужно домножить итоговую сумму упаковок на «Количество в упаковке» из таблицы «Товар». Пример: продано 4 упаковки по 6 кг — итог 24 кг.
5. Метод расчёта суммы через цену. Для вычисления затраченных или полученных денег каждая подходящая строка умножается на цену из этой же строки (цена может отличаться день от дня), а затем результаты складываются. Пример: за три дня закупили 100, 150 и 200 упаковок по 30 руб./шт при 10 шт. в упаковке — сумма считается отдельно по каждому дню и складывается.
Алгоритм решения по шагам
- Внимательно прочитать вопрос и выделить все условия: конкретный товар (или отдел), район/магазин, период дат, тип операции, в каких единицах нужен ответ (шт., упаковки, кг, руб.).
- В таблице «Товар» найти строку с нужным наименованием, выписать Артикул, Единицу измерения и Количество в упаковке.
- В таблице «Магазин» найти все ID магазинов, относящиеся к нужному району (если вопрос касается конкретного магазина — просто взять его ID).
- В таблице «Движение товаров» отфильтровать записи одновременно по трём-четырём условиям: Артикул = найденный, ID магазина из полученного списка, Дата в пределах указанного периода (включая крайние даты), при необходимости Тип операции.
- Просуммировать нужное поле — Количество упаковок, либо произведение количества на цену.
- Если вопрос про изменение остатка, отдельно посчитать сумму по поступлениям и отдельно по продажам, затем вычесть одно из другого.
- При необходимости перевести упаковки в килограммы или штуки, умножив на коэффициент из таблицы «Товар».
- Проверить единицы измерения ответа и записать итоговое число в требуемом формате.
Разбор примеров
Пример 1. Нужно найти, на сколько увеличилось количество упаковок яиц диетических в магазинах Заречного района с 1 по 10 июня. Действуем по алгоритму: в таблице «Товар» находим артикул позиции «Яйца диетические». В таблице «Магазин» выбираем все ID магазинов, у которых Район = «Заречный». В таблице «Движение товаров» отбираем строки с этим артикулом, с ID магазина из списка Заречного района и датой в диапазоне с 1 по 10 июня включительно. Далее строки разделяются по Типу операции: отдельно суммируется Количество упаковок для всех операций «Поступление», отдельно — для всех операций «Продажа». Изменение остатка находится по формуле . После суммирования всех подходящих записей разница составляет 966 — это и есть искомое увеличение количества упаковок.
Пример 2. Требуется определить, сколько килограммов паштета из куриной печени продано в магазинах Заречного района за тот же период. Сначала в таблице «Товар» находим артикул паштета и выписываем поле «Количество в упаковке» — коэффициент , показывающий, сколько килограммов в одной упаковке. Затем повторяем фильтрацию: артикул паштета, ID магазинов Заречного района, даты с 1 по 10 июня включительно, Тип операции = «Продажа». Суммируем Количество упаковок по всем отобранным строкам — получаем общее число проданных упаковок . Переводим в килограммы по формуле . В результате расчёта получаем 24 кг — именно это число и является ответом (допустима запись 24,0).
Пример 3. Нужно вычислить, сколько рублей потратили магазины Первомайского района на закупку яиц диетических за период с 1 по 10 июня включительно. Порядок действий тот же: находим артикул яиц диетических, находим список ID магазинов Первомайского района, фильтруем таблицу движения товаров по артикулу, по этим ID, по датам (включая обе границы) и по Типу операции = «Поступление» (закупка — это именно поступление товара в магазин). Так как цена за штуку может отличаться в разные дни поставки, стоимость каждой операции считается отдельно: количество упаковок умножается на количество товара в упаковке и на цену за штуку, то есть . Затем все значения складываются: . Итоговая сумма затрат на закупку составляет 174300 рублей.
Во всех трёх примерах видно, что главное — правильно и полностью применить фильтр по всем условиям сразу, не забыть про включительный характер границ дат и про то, что районы связаны с операциями не напрямую, а через ID магазина.
Типичные ошибки и ловушки
- Забывают, что период «с… по… включительно» включает обе крайние даты, и теряют записи первого или последнего дня.
- Путают Поступление и Продажу местами, особенно когда в вопросе используются синонимы: «закупка» — это поступление, а «реализация» — продажа.
- Считают остаток только по поступлениям или только по продажам, забывая вычесть одно из другого.
- Не переводят упаковки в килограммы или штуки, когда вопрос требует именно эти единицы, и дают ответ в упаковках.
- Забывают, что район не является полем таблицы операций — его нужно сначала найти через таблицу «Магазин» и список соответствующих ID.
- Используют одну цену для всех операций, хотя цена может меняться от даты к дате — это особенно критично при расчёте сумм в рублях.
- Ошибаются при фильтрации по артикулу, если в перечне товаров есть похожие наименования (например, разные виды одного продукта) — важно сверять полное название и артикул.
- Округляют ответ, когда в задаче ожидается точное целое число, либо, наоборот, не указывают десятичную часть, когда она требуется.
Как готовиться
Лучший способ подготовки — регулярная практика с реальными файлами баз данных из тренировочных вариантов. Установите табличный редактор (Excel, LibreOffice Calc, Google Таблицы) и научитесь применять функции фильтрации и условного суммирования: автофильтр, сортировку по нескольким столбцам, функции СУММЕСЛИМН и ВПР для быстрого поиска значений по ключу.
При разборе каждой новой задачи сначала внимательно изучайте схему связей между таблицами — это экономит время и предотвращает ошибки фильтрации. Решайте задания на время: цель — укладываться в 3–4 минуты на один вопрос, включая проверку правильности отбора записей.
Полезно вести список типичных формулировок вопросов (остаток, масса, стоимость, количество операций, средняя цена) и заранее знать, какая последовательность действий соответствует каждой из них. После решения обязательно проверяйте, что учли все условия одновременно, а не по отдельности, и что единицы измерения ответа совпадают с требуемыми в вопросе.
Частые вопросы
Нужно ли знать язык SQL для решения задания 3?
Нет, задание решается без SQL — достаточно уметь фильтровать и суммировать данные в обычной таблице, вручную или с помощью функций табличного редактора.
Как понять, что период дат включает обе границы?
Формулировка «с… по… включительно» прямо указывает, что и начальная, и конечная дата входят в выборку — их нельзя пропускать при фильтрации.
Что делать, если цена товара меняется от даты к дате?
Считать стоимость каждой операции отдельно по формуле , а затем складывать все полученные суммы, а не умножать общее количество на одну усреднённую цену.
Как найти магазины нужного района, если в таблице операций района нет?
Сначала в таблице «Магазин» находят все ID магазинов с нужным районом, а затем именно эти ID используют как условие фильтрации в таблице движения товаров.
Почему остаток товара считается через разность поступлений и продаж?
Остаток на конец периода равен тому, что завезли, минус то, что продали за это же время: .
В каких единицах давать ответ, если в таблице всё указано в упаковках?
Нужно смотреть на формулировку вопроса: если спрашивают про килограммы или штуки, количество упаковок умножают на коэффициент «Количество в упаковке» из таблицы «Товар».
Сколько времени должно уходить на одно такое задание на экзамене?
Оптимально укладываться в 3–5 минут, включая проверку правильности отбора записей по всем условиям одновременно.