ЕГЭ · Информатика

Реляционные базы данных для ЕГЭ: теория, примеры, разбор заданий

Реляционные базы данных — одна из ключевых тем в ЕГЭ по информатике. Она встречается как в первой части (задания на теорию), так и во второй (задачи на проектирование и запросы). Без чёткого понимания структуры таблиц, первичных и внешних ключей, а также типов связей невозможно решить эти задания на высокий балл.

В этом материале мы разберём основы реляционной модели, типы связей между таблицами и научимся решать реальные задачи из ЕГЭ. Вы узнаете, как определить первичный ключ, как связать таблицы и как не запутаться в отношениях 1:1, 1:N и N:M.

Материал рассчитан на учеников 10-11 классов, которые готовятся к экзамену. Мы не будем отвлекаться на лишнюю теорию — только то, что нужно для решения задач.

🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Основы реляционных БД: таблицы, поля, записи, ключи

Реляционная база данных — это набор связанных таблиц. Таблица состоит из полей (столбцов) и записей (строк). Каждое поле имеет имя и тип данных (число, текст, дата и т.д.). Запись — это один набор значений полей.

Первичный ключ — это поле или набор полей, однозначно идентифицирующий каждую запись в таблице. Значения первичного ключа должны быть уникальными и не могут быть NULL. Чаще всего в качестве первичного ключа используют искусственный идентификатор (ID).

Внешний ключ — это поле в таблице, которое ссылается на первичный ключ другой таблицы. Он обеспечивает связь между таблицами и поддерживает целостность данных.

Пример: таблица «Ученики» с первичным ключом id_ученика. Таблица «Оценки» содержит внешний ключ id_ученика, который ссылается на id_ученика в таблице «Ученики».

Пример 1
Условие.

Дана таблица «Студенты»: id_студента (первичный ключ), ФИО, группа. Таблица «Экзамены»: id_экзамена (первичный ключ), id_студента (внешний ключ), предмет, балл. Какое поле является первичным ключом в таблице «Экзамены»? Обоснуйте.

Решение.

Первичный ключ таблицы «Экзамены» — id_экзамена. Он уникален для каждого экзамена. Поле id_студента не может быть первичным ключом, так как один студент может сдавать несколько экзаменов (значения id_студента не уникальны). Внешний ключ id_студента связывает таблицы.

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

Связи между таблицами отражают отношения между сущностями. Различают три основных типа:

1. Один к одному (1:1). Каждой записи в первой таблице соответствует не более одной записи во второй, и наоборот. Пример: таблица «Паспорт» и таблица «Гражданин» — у каждого гражданина один паспорт, и каждый паспорт принадлежит одному гражданину. Реализуется через внешний ключ с уникальным ограничением в одной из таблиц.

2. Один ко многим (1:N). Каждой записи в первой таблице соответствует несколько записей во второй, но каждая запись второй таблицы связана только с одной записью первой. Пример: таблица «Категория товаров» и таблица «Товары» — одна категория может содержать много товаров, но каждый товар относится к одной категории. Реализуется через внешний ключ в таблице «многие».

3. Многие ко многим (N:M). Каждой записи в первой таблице соответствует несколько записей во второй, и наоборот. Пример: таблица «Студенты» и таблица «Курсы» — студент может посещать много курсов, курс могут посещать много студентов. Для реализации требуется промежуточная таблица, содержащая внешние ключи на обе таблицы.

Пример 1
Условие.

В базе данных интернет-магазина есть таблицы «Заказы» (id_заказа, дата, id_клиента) и «Товары» (id_товара, название, цена). Один заказ может содержать несколько товаров, и один товар может быть в нескольких заказах. Какую связь нужно организовать и как?

Решение.

Связь «многие ко многим» (N:M). Необходимо создать промежуточную таблицу, например, «Состав заказа» с полями id_заказа (внешний ключ к таблице «Заказы») и id_товара (внешний ключ к таблице «Товары»). Также можно добавить поле количество. Первичным ключом будет пара (id_заказа, id_товара).

Разбор задания ЕГЭ: проектирование реляционной БД

Рассмотрим типовое задание из ЕГЭ, где требуется спроектировать структуру базы данных. Обычно даётся описание предметной области, и нужно определить таблицы, поля, ключи и связи.

Алгоритм решения:
1. Выделить сущности (объекты) предметной области.
2. Для каждой сущности определить её атрибуты (поля).
3. Назначить первичный ключ для каждой таблицы.
4. Определить связи между сущностями и спроектировать внешние ключи.
5. Если связь N:M — создать промежуточную таблицу.

Пример 1
Условие.

Необходимо спроектировать БД для учёта книг в библиотеке. Известно: у каждой книги есть ISBN, название, год издания, автор (один или несколько), жанр (один или несколько). Автор имеет ФИО, дату рождения. Читатель имеет номер читательского билета, ФИО, телефон. Один читатель может взять несколько книг, одна книга может быть взята разными читателями (но не одновременно). Также нужно хранить дату выдачи и дату возврата. Спроектируйте схему БД.

Решение.

Шаг 1. Выделяем сущности: Книги, Авторы, Читатели, Выдача. Также необходимы промежуточные таблицы для связей N:M: Книги_Авторы (для многих авторов), Книги_Жанры (для многих жанров).

Шаг 2. Определяем поля:
- Книги: ISBN (первичный ключ), название, год_издания.
- Авторы: id_автора (первичный ключ), ФИО, дата_рождения.
- Книги_Авторы: id_книги (внешний ключ к Книги.ISBN), id_автора (внешний ключ к Авторы.id_автора). Первичный ключ — пара (id_книги, id_автора).
- Жанры: id_жанра (первичный ключ), название_жанра.
- Книги_Жанры: id_книги (внешний ключ), id_жанра (внешний ключ). Первичный ключ — пара (id_книги, id_жанра).
- Читатели: id_читателя (первичный ключ), ФИО, телефон.
- Выдача: id_выдачи (первичный ключ), id_книги (внешний ключ), id_читателя (внешний ключ), дата_выдачи, дата_возврата (может быть NULL, если книга ещё не возвращена).

Шаг 3. Связи: Книги и Авторы — многие ко многим (через Книги_Авторы). Книги и Жанры — многие ко многим (через Книги_Жанры). Читатели и Выдача — один ко многим (один читатель может иметь несколько выдач). Книги и Выдача — один ко многим (одна книга может быть выдана много раз, но не одновременно).

Разбор задания ЕГЭ: запросы к реляционной БД

В ЕГЭ также встречаются задания на составление SQL-запросов (или их аналогов) для выборки данных. Обычно требуется написать запрос на русском языке или выбрать правильный вариант. Рассмотрим пример.

Пример 1
Условие.

Имеются таблицы: Ученики (id_ученика, ФИО, класс), Оценки (id_оценки, id_ученика, предмет, балл). Выведите список учеников, получивших хотя бы одну оценку 5 по математике.

Решение.

Шаг 1. Выбираем записи из таблицы Оценки, где предмет = 'математика' и балл = 5.
Шаг 2. Получаем id_ученика из этих записей.
Шаг 3. Выбираем из таблицы Ученики записи, где id_ученика входит в полученный список.
Шаг 4. Выводим ФИО.

На русском языке: Выбрать ФИО из Ученики, где id_ученика в (выбрать id_ученика из Оценки где предмет = 'математика' и балл = 5).

Часто задаваемые вопросы о реляционных БД в ЕГЭ

Собрали вопросы, которые чаще всего возникают у школьников и родителей при подготовке к ЕГЭ по этой теме.

Частые вопросы

Что такое первичный ключ простыми словами?
Первичный ключ — это уникальный идентификатор каждой строки в таблице. Например, номер паспорта или ID ученика. Он не может повторяться и не может быть пустым.
Чем отличается внешний ключ от первичного?
Внешний ключ — это поле в таблице, которое ссылается на первичный ключ другой таблицы. Он нужен для связи таблиц. Например, в таблице «Оценки» поле «id_ученика» — внешний ключ, который ссылается на первичный ключ таблицы «Ученики».
Как определить тип связи между таблицами?
Нужно понять, сколько записей в одной таблице может соответствовать одной записи в другой. Если одной записи в таблице A соответствует ровно одна запись в таблице B — связь 1:1. Если одной записи в A соответствует много записей в B — связь 1:N. Если много записей в A соответствует много записей в B — связь N:M.
Зачем нужна промежуточная таблица при связи N:M?
Промежуточная таблица хранит пары внешних ключей, связывающие записи из двух таблиц. Она позволяет реализовать отношение «многие ко многим», которое напрямую в реляционной модели не поддерживается.
Может ли первичный ключ состоять из нескольких полей?
Да, такой ключ называется составным. Например, в промежуточной таблице для связи N:M первичным ключом часто является пара внешних ключей.
Как подготовиться к заданиям по реляционным БД на ЕГЭ?
Полезно разобрать теорию, решать задачи из открытого банка ФИПИ и использовать тренажёры. Если нужна помощь, можно попробовать AI-репетитора, например Наставника, который объяснит тему в формате диалога и поможет разобрать сложные моменты.
🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Реляционные БД: подготовка к ЕГЭ по информатике