- Различать базу данных, СУБД и объекты СУБД (таблицы, запросы, формы, отчёты)
- Узнавать иерархическую, сетевую и реляционную модели по примеру
- Находить в таблице поля, записи и ключевое поле, определять тип связи (1:1, 1:N, M:N)
- Пошагово решать задачи в стиле DİM по связанным таблицам
В школьной библиотеке тысяча книг и сотни читателей. Библиотекарь за несколько секунд отвечает на вопрос «кто какую книгу взял в этом месяце?», потому что сведения хранятся не в тетради, а в базе данных. Так же устроены электронный школьный журнал, банковские счета и каталог интернет-магазина.
В информатике вступительного экзамена в каждом варианте 2025–2026 годов было 2 задания по базам данных: одно на запрос, другое на связанные таблицы. В этом уроке ты изучишь понятия и алгоритм решения задач на связанные таблицы, а в следующем — «Запросы, поиск и сортировка в базе данных» — запросы.
База данных и СУБД
Совокупность данных по определённой теме, организованная по заранее продуманным правилам и хранящаяся в памяти компьютера. Благодаря правилам нужные сведения быстро находятся, добавляются и изменяются.
Программа, которая позволяет создавать базу данных, заполнять и редактировать её, выполнять поиск и сортировку, защищать данные. Примеры: Microsoft Access, LibreOffice Base, MySQL, PostgreSQL, SQLite, Oracle Database, Microsoft SQL Server.
Запомни разницу: БД — это сами данные (каталог библиотеки), а СУБД — инструмент для работы с ними (библиотекарь, который ведёт каталог). В классификации программного обеспечения СУБД относится к прикладным программам. В одном задании DİM на соответствие Yukon тоже был дан как СУБД: это рабочее название Microsoft SQL Server 2005. У СУБД четыре основных объекта:
| Объект | Для чего | Пример |
|---|---|---|
| Таблица | хранит данные в строках и столбцах; основа базы | «Читатели», «Книги» |
| Запрос | отбирает записи по условию, сортирует, вычисляет | читатели с улицы Низами |
| Форма | окно для удобного ввода и просмотра данных | форма регистрации нового читателя |
| Отчёт | представляет данные в виде сгруппированного документа с итогами для печати | список и число книг, выданных за месяц |
Установите соответствие.
1. Система управления базами данных
2. Растровый графический редактор
3. Текстовый процессор
a. Microsoft Access b. GIMP c. LibreOffice Writer d. PostgreSQL e. Adobe Photoshop
Показать решениеСкрыть решение
Ответ: 1 – a, d; 2 – b, e; 3 – c.
Модели данных
Модель данных — это структура, которая показывает, как организованы данные и связи между ними. В программе изучаются три классические модели:
| Модель | Структура | Пример |
|---|---|---|
| Иерархическая | дерево: наверху один корень, у каждого элемента ровно один «родитель» | диск → папка → подпапка → файл; школа → классы → ученики |
| Сетевая | граф: элемент может быть связан со многими элементами и иметь несколько «родителей» | учителя и классы: каждый учитель в нескольких классах, в каждом классе несколько учителей |
| Реляционная | набор двумерных таблиц, связанных общими полями | таблицы «Читатели», «Книги», «Выдачи» |
Сегодня самая распространённая модель — реляционная: все названные выше СУБД работают с таблицами. О деревьях и графах подробно рассказано в уроках «Древовидные информационные модели» и «Графы как информационные модели: матрица смежности и число путей».
Таблица: поле, запись и ключевое поле
Столбец таблицы. Хранит одно свойство объекта (Читатель, Улица). У каждого поля есть имя и тип.
Строка таблицы: все сведения об одном объекте (об одном читателе, одной книге). Строка заголовка с именами полей записью не считается.
Поле, значение которого не повторяется ни в каких двух записях и поэтому однозначно определяет запись (первичный ключ): Билет_№, ID_книги. Поле другой таблицы, которое хранит значения этого ключа, называется внешним ключом.
| Тип поля | Что хранит | Пример |
|---|---|---|
| Текстовый | буквы, цифры, знаки | имя, улица, номер телефона |
| Числовой | числа для вычислений | число страниц, балл |
| Дата/время | даты и время | 15.09.2025 |
| Денежный | денежные суммы | 12,50 ₼ |
| Счётчик | номер, который автоматически растёт с каждой новой записью | 1, 2, 3, … |
| Логический | одно из двух значений: да / нет | книга возвращена? |
В строке заголовка таблицы «Ученики» 5 имён полей: ID, Имя, Фамилия, Класс, Дата рождения; ниже заполнено 7 строк. 1) Сколько в таблице полей и записей? 2) Какое поле может быть ключевым? 3) Какой тип у поля «Дата рождения»?
Показать решениеСкрыть решение
2) Имя, фамилия, класс и даже дата рождения у двух учеников могут совпасть. ID, который выдаётся каждому ученику, не повторяется — ключевое поле ID.
3) Тип «дата/время».
Связи между таблицами
Если записать всё в одну таблицу, улица Айсель будет повторяться при каждой выдаче книги: это занимает место и ведёт к ошибкам, ведь при смене адреса его пришлось бы исправлять в десятках строк. Поэтому каждый вид объектов хранится в своей таблице, а таблицы связываются через ключевые поля. Связи бывают трёх видов:
- Один к одному (1:1): одной записи первой таблицы соответствует не более одной записи второй — гражданин и его удостоверение личности.
- Один ко многим (1:N): одной записи первой таблицы соответствует много записей второй, а обратно — только одна — класс и его ученики.
- Многие ко многим (M:N): много с обеих сторон — читатели и книги. В реляционной базе такая связь строится через третью, связующую таблицу: в ней ключи обеих таблиц стоят как внешние ключи, и связь M:N превращается в две связи 1:N.
Каждая строка таблицы «Выдачи» — одно событие: «этот читатель взял эту книгу». Один и тот же читатель или книга может встречаться в нескольких строках — это не повтор, а отдельные выдачи.
Задачи в стиле DİM на связанные таблицы
В задании даны 2–3 связанные таблицы и спрашивается: сколько раз, сколько человек, сумма ID, сумма дней. СУБД делает это одним запросом, а на экзамене это нужно сделать вручную. Самый надёжный путь — выписывать ключи как множества.
- 1Разбери вопрос
Что нужно найти (количество, сумму, имя) и какие есть условия (улица, автор, класс)?
- 2Преврати условия в ключи
Для каждого условия выпиши подходящие ключи из его таблицы в виде множества, например {A1, A3, A5}.
- 3Отфильтруй связующую таблицу
Отметь только строки, которые подходят к обоим множествам.
- 4Выполни действие
Посчитай строки (сколько раз), разных людей (сколько человек) или сложи нужный столбец.
- 5Проверь
Повторяющиеся строки посчитаны отдельно? Вопрос был «сколько раз» или «сколько человек»?
| Билет_№ | Читатель | Улица |
|---|---|---|
| A1 | Айсель | улица Низами |
| A2 | Мурад | улица Физули |
| A3 | Лейла | улица Низами |
| A4 | Эльвин | улица Самеда Вургуна |
| A5 | Нигяр | улица Низами |
| A6 | Рашад | улица Физули |
| ID_книги | Автор | Страниц |
|---|---|---|
| 11 | Низами Гянджеви | 320 |
| 12 | Жюль Верн | 280 |
| 13 | Низами Гянджеви | 240 |
| 14 | Мирза Фатали Ахундов | 150 |
| 15 | Жюль Верн | 410 |
| № | Билет_№ | ID_книги |
|---|---|---|
| 1 | A1 | 12 |
| 2 | A2 | 11 |
| 3 | A3 | 15 |
| 4 | A1 | 15 |
| 5 | A4 | 12 |
| 6 | A5 | 13 |
| 7 | A3 | 12 |
| 8 | A6 | 15 |
| 9 | A1 | 11 |
| 10 | A5 | 12 |
| 11 | A3 | 15 |
| 12 | A2 | 14 |
По таблицам 1–3: сколько всего раз жители улицы Низами брали книги Жюля Верна?
A) 4 B) 5 C) 6 D) 3 E) 7
Показать решениеСкрыть решение
2) Таблица 2: Жюль Верн → {12, 15}.
3) Строки таблицы 3, подходящие к обоим условиям: 1 (A1, 12), 3 (A3, 15), 4 (A1, 15), 7 (A3, 12), 10 (A5, 12), 11 (A3, 15).
4) Вопрос «сколько раз» — считаем строки: 6. (Лейла брала книгу 15 дважды — это две разные выдачи.)
Верный ответ: C) 6.
По таблицам 1–3: если Лейла прочитала все взятые книги, сколько всего страниц она прочитала? Каждая выдача считается отдельно.
Показать решениеСкрыть решение
2) Таблица 3: строки с A3 — 3 (книга 15), 7 (книга 12), 11 (книга 15).
3) Таблица 2: 15 → 410 страниц, 12 → 280 страниц.
4) 410 + 280 + 410 = 1100 страниц.
Ловушка: если посчитать книгу 15 один раз, получится 690 — это неверно.
readers = {'A1': 'Nizami', 'A2': 'Fuzuli', 'A3': 'Nizami',
'A4': 'Vurgun', 'A5': 'Nizami', 'A6': 'Fuzuli'}
books = {11: ('Nizami Ganjavi', 320), 12: ('Jules Verne', 280),
13: ('Nizami Ganjavi', 240), 14: ('Mirza Fatali Akhundov', 150),
15: ('Jules Verne', 410)}
loans = [('A1', 12), ('A2', 11), ('A3', 15), ('A1', 15), ('A4', 12), ('A5', 13),
('A3', 12), ('A6', 15), ('A1', 11), ('A5', 12), ('A3', 15), ('A2', 14)]
nizami = {card for card, st in readers.items() if st == 'Nizami'}
verne = {book for book, (author, pages) in books.items() if author == 'Jules Verne'}
print('Readers:', sorted(nizami), 'Books:', sorted(verne))
times = sum(1 for card, book in loans if card in nizami and book in verne)
print('Loans of Verne books by Nizami St. readers:', times)
pages = sum(books[book][1] for card, book in loans if card == 'A3')
print('Pages read by A3 (Leyla):', pages)▸ Ожидаемый результат
Readers: ['A1', 'A3', 'A5'] Books: [12, 15] Loans of Verne books by Nizami St. readers: 6 Pages read by A3 (Leyla): 1100
Классы (ID_класса — название): 1 — 9a, 2 — 10a, 3 — 10b, 4 — 11a, 5 — 10c.
Ученики (имя — ID_класса — рост): Камран — 2 — 172 см, Фидан — 4 — 168 см, Турал — 3 — 181 см, Сабина — 5 — 165 см, Орхан — 1 — 175 см, Гюнай — 3 — 169 см, Кянан — 5 — 177 см.
Сколько учеников 10-х классов выше 170 см?
Показать решениеСкрыть решение
2) Ученики этих классов: Камран (172), Турал (181), Сабина (165), Гюнай (169), Кянан (177).
3) Выше 170 см: Камран, Турал, Кянан.
Ответ: 3. (Только 10a дало бы 1, без условия на класс — 4.)
Главное
- База данных — это сами данные, СУБД — программа для работы с ними (Access, MySQL, PostgreSQL, SQLite); СУБД относится к прикладному ПО.
- Объекты СУБД: таблица хранит, запрос отбирает, форма помогает вводить, отчёт готовит к печати.
- Модели: иерархическая — дерево, сетевая — граф, реляционная — связанные таблицы.
- Поле — столбец, запись — строка (заголовок не считается), значение ключевого поля не повторяется.
- Связь M:N разбивается связующей таблицей на две связи 1:N; каждая её строка — отдельное событие и считается отдельно.
- Задача на связанные таблицы: условия → множества ключей → фильтр связующей таблицы → количество или сумма.
Проверь себя
Вопросов: 12. Каждый правильный ответ приносит XP.