Пн. Июн 1st, 2026

4.5 Реляционные базы данных

Табличные базы данных, SQL-запросы, связи между таблицами и подготовка к ЕГЭ

1 Введение в реляционные базы данных

Реляционные базы данных (РБД) — это базы данных, основанные на реляционной модели данных. Они представляют информацию в виде таблиц (отношений) и являются наиболее распространенным типом баз данных в современном мире.

Основные преимущества

  • Структурированное хранение данных
  • Целостность данных
  • Гибкость запросов (SQL)
  • Масштабируемость
  • Стандартизация

Области применения

  • Интернет-магазины
  • Банковские системы
  • Социальные сети
  • Учебные заведения
  • Государственные учреждения

2 Основные понятия реляционных баз данных

Структура таблицы базы данных

Таблица «Студенты»
ID Фамилия Имя Группа Средний балл
1 Иванов Петр ИВТ-101 4.5
2 Сидорова Анна ИВТ-101 4.8
3 Петров Сергей ИВТ-102 3.9
Терминология:

Таблица (отношение)

Структура для хранения данных об однотипных объектах

Поле (столбец, атрибут)

Отдельная характеристика объекта (ID, Фамилия, Имя)

Запись (строка, кортеж)

Набор данных об одном объекте (вся строка таблицы)

Ключ таблицы

Поле (или набор полей), уникально идентифицирующее запись

Типы ключей:
  • Первичный ключ — уникальный идентификатор записи
  • Внешний ключ — ссылка на первичный ключ другой таблицы
  • Потенциальный ключ — поле, которое могло бы быть первичным
  • Составной ключ — ключ из нескольких полей
Требования к первичному ключу:
  • Уникальность (нет двух одинаковых значений)
  • Непустота (значение не может быть NULL)
  • Неизменяемость (значение не должно меняться)
  • Минимальность (не содержит избыточных полей)

3 Работа с готовой базой данных

Для работы с реляционными базами данных используется язык SQL (Structured Query Language). Рассмотрим основные операции.

Пример базы данных «Библиотека»

Таблица «Книги»
Код_книги Название Автор Год Цена
1Война и мирТолстой Л.Н.1869500
2Преступление и наказаниеДостоевский Ф.М.1866450
3Мастер и МаргаритаБулгаков М.А.1967600
Таблица «Читатели»
Код_читателя Фамилия Имя Адрес
101ИвановИванул. Ленина, 1
102ПетроваМарияул. Мира, 15
1. Поиск данных (SELECT)
SELECT Название, Автор, Цена
FROM Книги
WHERE Год > 1900
ORDER BY Цена DESC;

Выбирает книги, изданные после 1900 года, отсортированные по убыванию цены

2. Сортировка (ORDER BY)
SELECT * FROM Книги
ORDER BY Автор ASC, Название ASC;

Сортирует книги по автору (по возрастанию), затем по названию

3. Фильтрация (WHERE)
SELECT Название, Цена
FROM Книги
WHERE Автор = 'Толстой Л.Н.'
  AND Цена BETWEEN 400 AND 600;

Выбирает книги Толстого стоимостью от 400 до 600 рублей

4 SQL-запросы: от простых к сложным

Запросы на выборку данных

Базовая структура SELECT
SELECT [столбцы]
FROM [таблица]
WHERE [условие]
ORDER BY [столбец] [ASC|DESC]
LIMIT [количество];
Агрегатные функции
SELECT 
    COUNT(*) AS всего_книг,
    AVG(Цена) AS средняя_цена,
    MAX(Цена) AS макс_цена,
    MIN(Цена) AS мин_цена,
    SUM(Цена) AS сумма
FROM Книги;
Запросы с параметрами

Пример 1: Поиск книг по автору (параметр передается в запрос)

SELECT Название, Год, Цена
FROM Книги
WHERE Автор = :author_name
ORDER BY Год DESC;

:author_name — параметр, который будет заменен конкретным значением

Пример 2: Динамический диапазон цен

SELECT * FROM Книги
WHERE Цена BETWEEN :min_price AND :max_price
ORDER BY Цена;

Вычисляемые поля в запросах

Вычисляемые поля позволяют создавать новые столбцы на основе существующих данных.

Пример 1: Скидка на книги
SELECT 
    Название,
    Цена,
    Цена * 0.9 AS цена_со_скидкой,
    Цена - Цена * 0.1 AS экономия
FROM Книги
WHERE Год < 2000;
Пример 2: Категоризация по цене
SELECT 
    Название,
    Цена,
    CASE
        WHEN Цена < 300 THEN 'Дешевая'
        WHEN Цена BETWEEN 300 AND 600 THEN 'Средняя'
        ELSE 'Дорогая'
    END AS категория_цены
FROM Книги;

5 Многотабличные базы данных

В реальных приложениях данные хранятся в нескольких связанных таблицах для устранения избыточности и обеспечения целостности.

Пример: База данных "Университет"

Таблица "Студенты"
IDИмяГруппа_ID
1Иванов П.101
2Сидорова А.101
3Петров С.102

Первичный ключ: ID
Внешний ключ: Группа_ID → Группы.ID

Таблица "Группы"
IDНазваниеФакультет
101ИВТ-101Информатики
102ИВТ-102Информатики
201ФИЗ-101Физики

Первичный ключ: ID

Таблица "Оценки"
IDСтудент_IDПредметОценка
11Информатика5
21Математика4
32Информатика5

Первичный ключ: ID
Внешний ключ: Студент_ID → Студенты.ID

Типы связей между таблицами
1:1

Один к одному

Каждой записи в таблице A соответствует не более одной записи в таблице B

1:N

Один ко многим

Одной записи в таблице A соответствует несколько записей в таблице B

M:N

Многие ко многим

Одной записи в таблице A соответствует несколько записей в таблице B и наоборот

Целостность базы данных

Целостность по ссылкам

Внешний ключ должен ссылаться на существующее значение первичного ключа.

Пример: Студент_ID в таблице "Оценки" должен существовать в таблице "Студенты"

Каскадные действия
  • CASCADE - удалить/обновить связанные записи
  • SET NULL - установить NULL в связанных записях
  • RESTRICT - запретить удаление/изменение
  • NO ACTION - не выполнять никаких действий

6 Запросы к многотабличным базам данных

Операции соединения таблиц (JOIN)

INNER JOIN

Выбирает только совпадающие записи из обеих таблиц

SELECT Студенты.Имя, Группы.Название
FROM Студенты
INNER JOIN Группы 
ON Студенты.Группа_ID = Группы.ID;
LEFT JOIN

Все записи из левой таблицы и совпадающие из правой

SELECT Студенты.Имя, Оценки.Оценка
FROM Студенты
LEFT JOIN Оценки 
ON Студенты.ID = Оценки.Студент_ID;
Пример сложного запроса
SELECT 
    Студенты.Имя,
    Группы.Название,
    AVG(Оценки.Оценка) AS средний_балл
FROM Студенты
INNER JOIN Группы ON Студенты.Группа_ID = Группы.ID
LEFT JOIN Оценки ON Студенты.ID = Оценки.Студент_ID
WHERE Группы.Факультет = 'Информатики'
GROUP BY Студенты.Имя, Группы.Название
HAVING AVG(Оценки.Оценка) >= 4.0
ORDER BY средний_балл DESC;

Пример решения задачи ЕГЭ

Условие: Даны таблицы "Авторы" и "Книги". Найти авторов, у которых более 3 книг, изданных после 2010 года.

Структура таблиц:
Авторы (ID, Фамилия, Имя)
Книги (ID, Название, Автор_ID, Год_издания)
Решение:
SELECT Авторы.Фамилия, Авторы.Имя, COUNT(*) AS количество_книг
FROM Авторы
INNER JOIN Книги ON Авторы.ID = Книги.Автор_ID
WHERE Книги.Год_издания > 2010
GROUP BY Авторы.ID, Авторы.Фамилия, Авторы.Имя
HAVING COUNT(*) > 3
ORDER BY количество_книг DESC;
Пояснение:
  1. Соединяем таблицы по полю Автор_ID
  2. Фильтруем книги, изданные после 2010 года
  3. Группируем по авторам
  4. Оставляем только авторов с более чем 3 книгами
  5. Сортируем по убыванию количества книг

Практические задания для ЕГЭ

Задание 1: Простой SELECT

В таблице "Сотрудники" есть поля: ID, Фамилия, Имя, Должность, Зарплата. Напишите запрос для вывода фамилий и зарплат менеджеров с зарплатой более 50000, отсортированных по убыванию зарплаты.

Задание 2: Многотабличный запрос

Даны таблицы: "Заказы" (ID, Клиент_ID, Сумма, Дата) и "Клиенты" (ID, Имя, Город). Напишите запрос, который выводит имена клиентов из Москвы и общую сумму их заказов за 2023 год.

Задание 3: Группировка и фильтрация

В таблице "Продукты" (ID, Название, Категория, Цена, Количество). Напишите запрос для вывода категорий, в которых средняя цена продукта превышает 1000, а общее количество продуктов больше 10.

Шпаргалка: Основные операторы SQL

DML (Data Manipulation)

  • SELECT - выборка данных
  • INSERT - добавление записей
  • UPDATE - обновление записей
  • DELETE - удаление записей

Условия WHERE

  • =, <>, <, >, <=, >=
  • BETWEEN - диапазон
  • LIKE - поиск по шаблону
  • IN - вхождение в список
  • IS NULL - проверка на NULL

Соединения JOIN

  • INNER JOIN - внутреннее
  • LEFT JOIN - левое внешнее
  • RIGHT JOIN - правое внешнее
  • FULL JOIN - полное внешнее
  • CROSS JOIN - декартово произведение

Агрегатные функции

  • COUNT() - количество
  • SUM() - сумма
  • AVG() - среднее
  • MAX() - максимум
  • MIN() - минимум

Ключевые моменты для ЕГЭ

1

Знайте структуру РБД

Таблицы, поля, записи, ключи

2

Пишите корректные SQL-запросы

SELECT, WHERE, JOIN, GROUP BY

3

Понимайте связи между таблицами

1:1, 1:N, M:N, внешние ключи

4

Проверяйте целостность данных

Ограничения, каскадные действия

Совет для ЕГЭ: Внимательно читайте условие задачи, определите, какие таблицы нужны, какие связи между ними. Начинайте с простых запросов, постепенно добавляя условия и соединения. Проверяйте запрос на логику: что должно быть на входе, что на выходе.