Базы данных
Реляционные базы данных: таблицы как отношения, первичные и внешние ключи, нормализация. Основы SQL: запросы SELECT, фильтрация WHERE, сортировка ORDER BY. Связи между таблицами: один-ко-многим, многие-ко-многим.
Базы данных
1. Понятие базы данных
База данных (БД) — организованная совокупность взаимосвязанных данных, хранящаяся и обрабатываемая с помощью системы управления базами данных (СУБД).
СУБД — программное обеспечение для создания, ведения и обработки баз данных (MS Access, PostgreSQL, MySQL, SQLite).
2. Реляционная модель данных
Реляционная база данных — БД, в которой данные представлены в виде прямоугольных таблиц (отношений).
Основные понятия:
- Отношение — таблица
- Кортеж — строка таблицы (запись)
- Атрибут — столбец таблицы (поле)
- Домен — множество допустимых значений атрибута (тип данных)
Пример: таблица «Ученики»
| id (PK) | Фамилия | Имя | Класс | Год_рождения |
|---|---|---|---|---|
| 1 | Иванов | Иван | 9А | 2009 |
| 2 | Петрова | Анна | 9Б | 2009 |
| 3 | Сидоров | Пётр | 9А | 2010 |
Здесь id — первичный ключ (Primary Key, PK). Каждое значение уникально и не может быть NULL.
3. Ключи и связи
Первичный ключ
Поле (или набор полей), однозначно идентифицирующее запись. Свойства:
- Уникальность (нет двух записей с одинаковым значением)
- Неизменность (значение не меняется со временем)
- Минимальность (достаточно полей для уникальности)
Внешний ключ
Поле в таблице, ссылающееся на первичный ключ другой таблицы. Обеспечивает ссылочную целостность.
Типы связей
Один-к-одному (1:1) — одной записи в таблице A соответствует одна запись в таблице B.
Один-ко-многим (1:M) — одной записи в таблице A соответствует много записей в таблице B. Самый распространённый тип.
Многие-ко-многим (M:N) — многим записям в A соответствует много записей в B. Реализуется через промежуточную таблицу.
Пример: связь «один-ко-многим»
Таблица «Классы»:
| id (PK) | Название | Кабинет |
|---|---|---|
| 1 | 9А | 204 |
| 2 | 9Б | 207 |
Таблица «Ученики» (внешний ключ класс_id):
| id (PK) | Фамилия | класс_id (FK) |
|---|---|---|
| 1 | Иванов | 1 |
| 2 | Петрова | 2 |
| 3 | Сидоров | 1 |
Значение класс_id в таблице «Ученики» должно существовать в столбце id таблицы «Классы» — это и есть ссылочная целостность.
4. Нормализация
Нормализация — процесс устранения избыточности данных. Основные правила (нормальные формы):
Первая нормальная форма (1НФ):
- Каждая ячейка содержит одно значение (атомарность)
- Все значения в столбце одного типа
- Каждая запись уникальна (есть первичный ключ)
Вторая нормальная форма (2НФ):
- Находится в 1НФ
- Каждый неключевой атрибут функционально полно зависит от первичного ключа
Третья нормальная форма (3НФ):
- Находится в 2НФ
- Нет транзитивных зависимостей (неключевые атрибуты не зависят от других неключевых)
Пример нарушения нормализации
| Ученик | Предметы | Учитель |
|---|---|---|
| Иванов | Математика, Физика | Петров |
Нарушение 1НФ: в ячейке «Предметы» несколько значений. Исправление:
| Ученик | Предмет | Учитель |
|---|---|---|
| Иванов | Математика | Петров |
| Иванов | Физика | Петров |
5. Основы SQL
SQL (Structured Query Language) — язык запросов к реляционным БД.
SELECT — выборка данных
SELECT фамилия, имя FROM ученики;
WHERE — фильтрация
SELECT * FROM ученики WHERE класс = '9А';
ORDER BY — сортировка
SELECT * FROM ученики ORDER BY фамилия ASC;
-- ASC — по возрастанию, DESC — по убыванию
Пример сложного запроса
SELECT ученики.фамилия, классы.название
FROM ученики
JOIN классы ON ученики.класс_id = классы.id
WHERE классы.кабинет = 204
ORDER BY ученики.фамилия;
6. Решение задач ОГЭ на базы данных
Типовая задача: дан фрагмент БД, требуется определить результат запроса.
Пример: Даны две таблицы:
Таблица «Кружки»:
| id | Название | Руководитель |
|----|-------------------|-------------|
| 1 | Робототехника | Смирнов |
| 2 | Программирование | Кузнецов |
| 3 | Шахматы | Иванова |
Таблица «Участники»:
| id | Фамилия | Кружок_id |
|----|----------|-----------|
| 1 | Иванов | 1 |
| 2 | Петрова | 2 |
| 3 | Сидоров | 1 |
| 4 | Кузнецов | 3 |
Сколько участников в кружке «Робототехника»?
Решение: id кружка «Робототехника» = 1. В таблице «Участники» с кружок_id = 1 — две записи (Иванов, Сидоров). Ответ: 2.
7. Важно!
- Первичный ключ — уникальный идентификатор записи. Не может быть NULL.
- Внешний ключ — ссылка на первичный ключ другой таблицы. Обеспечивает целостность данных.
- Нормализация уменьшает избыточность, но может снижать скорость запросов (нужен баланс).
- В задачах ОГЭ внимательно определяйте, какие таблицы связаны и по какому полю.
- SQL-запросы в ОГЭ обычно проверяют понимание SELECT, WHERE и JOIN.
Примеры вопросов из тренажёра
-
Q: Что такое реляционная база данных?
A: верный ответ — БД, в которой данные представлены в виде связанных таблиц (отношений)
Объяснение: Реляционная БД основана на модели отношений — данные хранятся в таблицах, связанных через ключи.
-
Q: Какое свойство обязательно для первичного ключа?
A: верный ответ — Уникальность для каждой записи
Объяснение: Первичный ключ должен однозначно идентифицировать запись, поэтому его значение уникально и не может быть NULL.
-
Q: Что такое внешний ключ?
A: верный ответ — Поле, ссылающееся на первичный ключ другой таблицы
Объяснение: Внешний ключ (FK) — это поле, которое ссылается на первичный ключ другой таблицы для обеспечения связи.
-
Q: Какой тип связи между таблицами «Классы» и «Ученики»?
A: верный ответ — Один-ко-многим (1:M)
Объяснение: Один класс содержит много учеников — это связь один-ко-многим. Внешний ключ находится в таблице «Ученики».
-
Q: Что такое нормализация базы данных?
A: верный ответ — Устранение избыточности данных путём разделения таблиц
Объяснение: Нормализация — процесс устранения избыточности и обеспечения целостности данных через нормальные формы.