Реляционные базы данных: структура и запросы — теория для ЕГЭ
Коротко о главном
Реляционная база данных (БД) — это набор связанных таблиц, где каждая строка (запись) описывает один объект, а столбец (поле) — один из его атрибутов. В задании 3 ЕГЭ обычно даны 2–3 таблицы, связанные общим полем (ключом), и нужно найти количество строк, значений или результат запроса на выборку/соединение данных.
Определения и формулы/правила
| Термин | Определение |
|---|---|
| Таблица (отношение) | Набор записей с одинаковой структурой полей |
| Запись (строка) | Информация об одном объекте |
| Поле (атрибут, столбец) | Характеристика объекта, имеет тип данных |
| Первичный ключ | Поле (или набор полей), уникально определяющее запись |
| Внешний ключ | Поле, ссылающееся на первичный ключ другой таблицы |
| Домен | Множество допустимых значений поля |
| Кортеж | Синоним записи (строки таблицы) |
Основные операции над таблицами:
- Выборка (SELECT/WHERE) — отбор строк по условию.
- Проекция — отбор нужных столбцов.
- Соединение (JOIN) — объединение таблиц по совпадающим значениям связующего поля (обычно внешний ключ = первичный ключ).
Множество результатов соединения двух таблиц по условию равенства ключей:
Количество строк в результате соединения «один ко многим» равно количеству записей в таблице «многие», удовлетворяющих условию.
Виды связей между таблицами:
| Тип связи | Пример |
|---|---|
| Один к одному | Паспорт — Человек |
| Один ко многим | Учитель — Ученики (один учитель ведёт много уроков) |
| Многие ко многим | Ученики — Кружки (через промежуточную таблицу) |
Как применять (примеры)
Пример 1. Подсчёт строк по условию Таблица «Ученики»: Имя, Класс, Оценка. Нужно найти количество учеников с оценкой 5 в 9 классе. Шаг 1: отобрать строки, где Класс = 9. Шаг 2: среди них отобрать строки, где Оценка = 5. Шаг 3: посчитать количество оставшихся строк — это ответ.
Пример 2. Соединение двух таблиц Таблица «Заказы» (Код_товара, Количество) и «Товары» (Код_товара, Название, Цена). Запрос: вывести название и сумму (Количество × Цена) для заказов, где сумма больше 1000. Шаг 1: для каждой строки «Заказы» найти соответствующую строку в «Товары» по Код_товара. Шаг 2: вычислить произведение. Шаг 3: отфильтровать по условию > 1000, посчитать нужное количество строк.
Пример 3. Работа с промежуточной таблицей (многие ко многим) Таблицы «Ученики», «Кружки», «Запись_на_кружки» (Код_ученика, Код_кружка). Запрос: сколько кружков посещает Иванов? Шаг 1: найти Код_ученика Иванова в таблице «Ученики». Шаг 2: в таблице «Запись_на_кружки» отобрать строки с этим кодом. Шаг 3: посчитать количество отобранных строк — ответ.
Типичные ошибки
- Путают первичный и внешний ключ: первичный уникален в своей таблице, внешний может повторяться (это поле связи).
- При соединении забывают, что одной строке из таблицы «один» может соответствовать несколько строк из таблицы «многие» — считают только одну связь.
- Не проверяют все условия запроса одновременно (например, забывают учесть класс при поиске оценки).
- Считают итоговое количество строк до применения всех фильтров, а не после.
- Путают понятия «запись» и «поле» — ошибочно ищут количество столбцов вместо строк или наоборот.
- Не учитывают, что в промежуточной таблице (многие ко многим) один и тот же код может встречаться несколько раз — и это нормально, а не ошибка данных.
Где встречается на экзамене
Тема входит в задание №3 ЕГЭ по информатике: дано 2–3 таблицы с данными, нужно выполнить анализ, соединение по ключу и подсчёт записей, удовлетворяющих условию. Обычно проверяется базовое понимание структуры реляционной модели и умение мысленно «сматчить» строки таблиц по общему полю без реального выполнения SQL-запроса.
Частые вопросы
Чем отличается первичный ключ от внешнего?
Первичный ключ уникально определяет запись в своей таблице (не повторяется), внешний ключ ссылается на первичный ключ другой таблицы и может повторяться много раз.
Как понять, что связь между таблицами «один ко многим»?
Если одной записи первой таблицы может соответствовать несколько записей второй таблицы (например, один учитель — много уроков), а обратное неверно — это связь «один ко многим».
Нужно ли знать SQL для решения задания 3?
Нет, задание проверяет логическое понимание структуры данных и связей между таблицами, а не синтаксис SQL-запросов.
Как считать количество строк после соединения таблиц?
Нужно последовательно применить все условия отбора и связи по ключам, а затем посчитать оставшиеся строки, удовлетворяющие всем условиям одновременно.
Что делать, если в задаче три связанные таблицы?
Сначала соединить две таблицы через общий ключ, получить промежуточный результат, затем соединить его с третьей таблицей по другому ключу.
Может ли внешний ключ быть пустым (NULL)?
Да, если связь необязательная — например, у сотрудника может не быть назначенного отдела, тогда внешний ключ отдела будет пустым.
Потренироваться: задание 3