Перейти к содержанию
Educora
Продвинутый10 класс22 мин38 / 59

Базы данных: модели, СУБД и связанные таблицы

База данных и СУБД, иерархическая, сетевая и реляционная модели, поле, запись и ключевое поле, связи 1:1, 1:N и M:N — и задача в стиле DİM: найти количество или сумму по 2–3 связанным таблицам.

Проверь себя
В этом уроке ты узнаешь
  • Различать базу данных, СУБД и объекты СУБД (таблицы, запросы, формы, отчёты)
  • Узнавать иерархическую, сетевую и реляционную модели по примеру
  • Находить в таблице поля, записи и ключевое поле, определять тип связи (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

Показать решение
Access и PostgreSQL управляют базами данных; GIMP и Photoshop редактируют изображения из пикселей (растровые); LibreOffice Writer — текстовый процессор. Одному пункту может соответствовать несколько букв.
Ответ: 1 – a, d; 2 – b, e; 3 – c.

Модели данных

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

МодельСтруктураПример
Иерархическаядерево: наверху один корень, у каждого элемента ровно один «родитель»диск → папка → подпапка → файл; школа → классы → ученики
Сетеваяграф: элемент может быть связан со многими элементами и иметь несколько «родителей»учителя и классы: каждый учитель в нескольких классах, в каждом классе несколько учителей
Реляционнаянабор двумерных таблиц, связанных общими полямитаблицы «Читатели», «Книги», «Выдачи»

Сегодня самая распространённая модель — реляционная: все названные выше СУБД работают с таблицами. О деревьях и графах подробно рассказано в уроках «Древовидные информационные модели» и «Графы как информационные модели: матрица смежности и число путей».

Таблица: поле, запись и ключевое поле

Определение
Поле

Столбец таблицы. Хранит одно свойство объекта (Читатель, Улица). У каждого поля есть имя и тип.

Определение
Запись

Строка таблицы: все сведения об одном объекте (об одном читателе, одной книге). Строка заголовка с именами полей записью не считается.

Определение
Ключевое поле

Поле, значение которого не повторяется ни в каких двух записях и поэтому однозначно определяет запись (первичный ключ): Билет_№, ID_книги. Поле другой таблицы, которое хранит значения этого ключа, называется внешним ключом.

Тип поляЧто хранитПример
Текстовыйбуквы, цифры, знакиимя, улица, номер телефона
Числовойчисла для вычисленийчисло страниц, балл
Дата/времядаты и время15.09.2025
Денежныйденежные суммы12,50 ₼
Счётчикномер, который автоматически растёт с каждой новой записью1, 2, 3, …
Логическийодно из двух значений: да / неткнига возвращена?
Поля, записи и ключ

В строке заголовка таблицы «Ученики» 5 имён полей: ID, Имя, Фамилия, Класс, Дата рождения; ниже заполнено 7 строк. 1) Сколько в таблице полей и записей? 2) Какое поле может быть ключевым? 3) Какой тип у поля «Дата рождения»?

Показать решение
1) Поле = столбец: 5 полей. Запись = строка под заголовком: 7 записей (строка заголовка не считается).
2) Имя, фамилия, класс и даже дата рождения у двух учеников могут совпасть. ID, который выдаётся каждому ученику, не повторяется — ключевое поле ID.
3) Тип «дата/время».

Связи между таблицами

Если записать всё в одну таблицу, улица Айсель будет повторяться при каждой выдаче книги: это занимает место и ведёт к ошибкам, ведь при смене адреса его пришлось бы исправлять в десятках строк. Поэтому каждый вид объектов хранится в своей таблице, а таблицы связываются через ключевые поля. Связи бывают трёх видов:

  • Один к одному (1:1): одной записи первой таблицы соответствует не более одной записи второй — гражданин и его удостоверение личности.
  • Один ко многим (1:N): одной записи первой таблицы соответствует много записей второй, а обратно — только одна — класс и его ученики.
  • Многие ко многим (M:N): много с обеих сторон — читатели и книги. В реляционной базе такая связь строится через третью, связующую таблицу: в ней ключи обеих таблиц стоят как внешние ключи, и связь M:N превращается в две связи 1:N.
ЧитателиБилет_№ЧитательУлицаКнигиID_книгиАвторСтраницВыдачи№Билет_№ID_книги1N1N
Связь M:N между читателями и книгами таблица «Выдачи» разбивает на две связи 1:N. Ключевые поля выделены фиолетовым.

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

Интерактив
Загрузка симуляции…
Проверь себя: перетащи каждую пару в нужную группу и нажми «Проверить».

Задачи в стиле DİM на связанные таблицы

В задании даны 2–3 связанные таблицы и спрашивается: сколько раз, сколько человек, сумма ID, сумма дней. СУБД делает это одним запросом, а на экзамене это нужно сделать вручную. Самый надёжный путь — выписывать ключи как множества.

  1. 1
    Разбери вопрос

    Что нужно найти (количество, сумму, имя) и какие есть условия (улица, автор, класс)?

  2. 2
    Преврати условия в ключи

    Для каждого условия выпиши подходящие ключи из его таблицы в виде множества, например {A1, A3, A5}.

  3. 3
    Отфильтруй связующую таблицу

    Отметь только строки, которые подходят к обоим множествам.

  4. 4
    Выполни действие

    Посчитай строки (сколько раз), разных людей (сколько человек) или сложи нужный столбец.

  5. 5
    Проверь

    Повторяющиеся строки посчитаны отдельно? Вопрос был «сколько раз» или «сколько человек»?

Билет_№ЧитательУлица
A1Айсельулица Низами
A2Мурадулица Физули
A3Лейлаулица Низами
A4Эльвинулица Самеда Вургуна
A5Нигярулица Низами
A6Рашадулица Физули
Таблица 1. Читатели
ID_книгиАвторСтраниц
11Низами Гянджеви320
12Жюль Верн280
13Низами Гянджеви240
14Мирза Фатали Ахундов150
15Жюль Верн410
Таблица 2. Книги
№Билет_№ID_книги
1A112
2A211
3A315
4A115
5A412
6A513
7A312
8A615
9A111
10A512
11A315
12A214
Таблица 3. Выдачи
Задание в стиле DİM: сколько раз?

По таблицам 1–3: сколько всего раз жители улицы Низами брали книги Жюля Верна?
A) 4 B) 5 C) 6 D) 3 E) 7

Показать решение
1) Таблица 1: улица Низами → {A1, A3, A5}.
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: если Лейла прочитала все взятые книги, сколько всего страниц она прочитала? Каждая выдача считается отдельно.

Показать решение
1) Таблица 1: Лейла → A3.
2) Таблица 3: строки с A3 — 3 (книга 15), 7 (книга 12), 11 (книга 15).
3) Таблица 2: 15 → 410 страниц, 12 → 280 страниц.
4) 410 + 280 + 410 = 1100 страниц.
Ловушка: если посчитать книгу 15 один раз, получится 690 — это неверно.
Python
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
Та же задача на Python: условия превращаются в множества, затем фильтруются строки связующей таблицы. Измени значение и нажми «Запустить». В SQL это делает JOIN — см. «JOIN: соединение таблиц».
Ловушка: «10-е классы»

Классы (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 см?

Показать решение
1) «10-е классы» — это 10a, 10b и 10c, то есть ID_класса ∈ {2, 3, 5}. Взять только 10a — самая частая ошибка.
2) Ученики этих классов: Камран (172), Турал (181), Сабина (165), Гюнай (169), Кянан (177).
3) Выше 170 см: Камран, Турал, Кянан.
Ответ: 3. (Только 10a дало бы 1, без условия на класс — 4.)

Главное

  • База данных — это сами данные, СУБД — программа для работы с ними (Access, MySQL, PostgreSQL, SQLite); СУБД относится к прикладному ПО.
  • Объекты СУБД: таблица хранит, запрос отбирает, форма помогает вводить, отчёт готовит к печати.
  • Модели: иерархическая — дерево, сетевая — граф, реляционная — связанные таблицы.
  • Поле — столбец, запись — строка (заголовок не считается), значение ключевого поля не повторяется.
  • Связь M:N разбивается связующей таблицей на две связи 1:N; каждая её строка — отдельное событие и считается отдельно.
  • Задача на связанные таблицы: условия → множества ключей → фильтр связующей таблицы → количество или сумма.

Проверь себя

Вопросов: 12. Каждый правильный ответ приносит XP.

1 / 12
Что такое СУБД?