§ 12. База данных как модель предметной области
Каждую секунду в мире генерируются терабайты данных. Твои сообщения, стримы, лайки, поисковые запросы — всё это где-то хранится. Но как из этого хаоса извлечь нужное за доли секунды? Как Google находит информацию среди миллиардов страниц быстрее, чем ты моргнёшь? Разгадка — в правильной организации данных. Давай разберём, как это работает.
Цифровая вселенная данных: от хаоса к порядку
12.1. Информационные системы: инфраструктура цифрового мира
Почему способность накапливать и находить информацию — это суперсила?
Задумайся: что отличает человечество от других видов? Не только интеллект, но и способность передавать знания между поколениями, накапливать опыт, мгновенно находить нужную информацию.
📈 Масштаб цифровой вселенной
В 2011 году объём данных составил 1,8 зеттабайта. Это как 200 миллионов фильмов в HD, которые можно смотреть без остановки 47 миллионов лет! И каждые два года этот объём удваивается.
Но вот парадокс: чем больше информации, тем сложнее найти в ней то, что нужно. Попробуй найти нужный файл на захламленном рабочем столе — это займёт время. А теперь представь, что нужно найти один файл среди миллиардов. Без правильной организации это невозможно.
💡 База данных (БД)
Это не просто набор файлов. Это упорядоченная по определённым правилам коллекция данных, которая отражает состояние объектов реального мира и связи между ними в какой-то предметной области (медицина, транспорт, образование, право).
БД хранится во внешней памяти компьютера и постоянно используется.
🔧 Информационная система
Это БД плюс все технологии и инструменты для работы с ней.
Аналогия: Представь БД как огромную библиотеку книг, а информационную систему — как библиотеку с каталогами, поисковыми системами, библиотекарями и удобными залами для чтения.
Где ты уже встречал информационные системы?
Каждый день ты взаимодействуешь с десятками информационных систем, даже не задумываясь об этом:
🚂 Транспортные системы
Покупка билетов на поезд или самолёт, отслеживание рейсов в реальном времени, проверка расписания электричек
⚕️ Медицинские системы
Поиск лекарств в аптеках города, онлайн-запись к врачу, электронные медицинские карты
🗺️ Картографические сервисы
Яндекс.Карты, 2ГИС — они не только показывают маршруты, но и знают о пробках, работе кафе, отзывах о местах
⚖️ Правовые порталы
Сайты с законами, нормативными актами, судебной практикой
Информационные системы — невидимая инфраструктура твоей повседневной жизни
12.2. Предметная область и её моделирование
Как описать кусочек реального мира на языке данных?
🌐 Определения
Предметная область — это та часть реального мира, которую мы рассматриваем в рамках какой-то задачи. Школа, библиотека, поликлиника, интернет-магазин — всё это примеры предметных областей.
Объект предметной области — это факт, лицо, событие, предмет, о котором могут быть собраны данные.
Сущность — это описание целого класса однотипных реальных объектов через набор их свойств (атрибутов).
В любой предметной области есть объекты (или классы объектов) и их свойства (атрибуты). Например, в предметной области "Школа":
📦 Объекты
Ученик, учитель, класс, кабинет, урок
🏷️ Свойства ученика
Фамилия, имя, год рождения, класс, номер личного дела
💻 Пример записи сущности
Сущность УЧЕНИК можно представить так:
УЧЕНИК (НОМЕР_ЛИЧНОГО_ДЕЛА, ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ГОД_РОЖДЕНИЯ)
Связи между объектами: как всё это соединяется?
Объекты не существуют изолированно — между ними есть связи. Выделяют четыре типа связей:
Один к одному
Одному объекту А соответствует ровно один объект Б, и наоборот.
Пример: ВЫПУСКНИК_ШКОЛЫ ↔ АТТЕСТАТ. Каждый выпускник получает один аттестат, и каждый аттестат принадлежит одному выпускнику.
Один ко многим
Одному объекту А могут соответствовать несколько объектов Б, но каждому объекту Б соответствует только один объект А.
Пример: КЛАСС ↔ УЧЕНИКИ. В одном классе учится много учеников, но каждый ученик учится только в одном классе.
Многие к одному
Нескольким объектам А соответствует один объект Б. Это обратная связь к "один ко многим".
Пример: УЧЕНИКИ ↔ КЛАСС. Много учеников учатся в одном классе.
Многие ко многим
Нескольким объектам А могут соответствовать несколько объектов Б, и наоборот.
Примеры:
- УЧЕНИКИ ↔ УЧИТЕЛЯ
- АВТОРЫ ↔ КНИГИ
ER-модель: графический язык для описания данных
🎨 Модель "сущность–связь" (ER-модель)
ER-модель (от Entity-Relationship) — это способ наглядно изобразить, какие объекты есть в предметной области и как они связаны между собой.
Модель предметной области, включающая сущности, их атрибуты и связи между сущностями называют моделью «сущность–связь».
Используются условные обозначения:
▭ Прямоугольники
Сущности
◯ Эллипсы
Атрибуты (свойства)
◇ Ромбы
Связи между сущностями
ER-модель: архитектурный чертёж для мира данных
✈️ Пример: предметная область "Авиаперелёты"
Рассмотрим две сущности: ПАССАЖИР и БИЛЕТ.
- ПАССАЖИР имеет атрибуты: ИМЯ, ФАМИЛИЯ, ДОКУМЕНТ
- БИЛЕТ имеет атрибуты: НОМЕР, РЕЙС, ДАТА, ВРЕМЯ, РЯД, МЕСТО
Связь между ними — Имеет (тип 1:1). Каждый пассажир имеет билет, каждый билет принадлежит пассажиру. Эта связь обязательная для пассажира (без билета не полетишь) и необязательная для билета (не все билеты могут быть проданы).
12.3. Модели данных: три подхода к организации информации
📐 Определение
Модель данных — это совокупность структур данных и операций их обработки.
С помощью модели данных могут быть представлены сущности и взаимосвязи между ними.
Существуют три основных типа моделей данных: иерархическая, сетевая и реляционная. Каждая имеет свои особенности, преимущества и ограничения.
Иерархическая модель: дерево с одним корнем
🌳 Принцип
Данные организованы в виде дерева. У каждого объекта (кроме корневого) есть только один родительский объект, но может быть много потомков.
📚 Пример: структура школы
ПОДРАЗДЕЛЕНИЕ (Старшая школа)
├── КЛАСС (10А)
│ ├── УЧЕНИК (Князев И.С.)
│ ├── УЧЕНИК (Кулик М.)
│ └── УЧЕНИК (Курбатова В.)
├── КЛАСС (11А)
│ ├── УЧЕНИК (Коровкин С.С.)
│ └── УЧЕНИК (Куницына А.)
└── КЛАСС (11Б)
└── ...
✅ Преимущества
- Простая и понятная структура
- Эффективна для строго иерархических данных (файловые системы, организационные структуры)
❌ Недостатки
- При большом количестве данных поиск может быть медленным
- Сложно представить связи, которые не укладываются в иерархию
🔒 Основное правило целостности
Ни один подчинённый объект (потомок) не может существовать без родительского объекта, за исключением одного основного родительского объекта.
⚙️ Команды для работы
- Найти указанное дерево
- Перейти от одного дерева к другому
- Перейти от родительского объекта к объекту-потомку
- Перейти от одного объекта к другому в иерархическом порядке
- Вставить новый объект в указанном месте
- Удалить текущий объект
Иерархическая модель: всё начинается с корня, и у каждого своё место
Сетевая модель: паутина связей
🕸️ Принцип
У каждого объекта может быть несколько родителей и несколько потомков. Это более гибкая структура, чем дерево.
🏀 Пример: школьные секции
Ученики могут посещать несколько секций, и в каждой секции занимается много учеников:
- Ученик Курбатова А. → Секции: Баскетбол, Бег
- Ученик Ляпин П. → Секции: Баскетбол, Бег, Волейбол
✅ Преимущества
- Гибкость в представлении сложных связей
- Эффективный доступ к связанным данным
❌ Недостатки
- При большом количестве объектов структура становится очень сложной
- Трудно поддерживать и модифицировать
⚙️ Команды для работы
- Найти указанный объект среди однотипных объектов
- Перейти от родительского объекта к первому потомку
- Перейти от объекта-потомка к родительскому объекту
- Вставить новый объект
- Удалить текущий объект
- Изменить объект
- Включить объект в определённую связь
- Разорвать связь
Сетевая модель: сложная паутина связей без строгой иерархии
Реляционная модель: мощь таблиц
📊 Принцип
Данные организованы в виде таблиц (отношений). Это самая распространённая модель, на которой основаны большинство современных БД.
Почему таблицы? Таблица — это универсальная структура, понятная человеку и удобная для обработки. Более того, таблицы можно рассматривать как математические множества, что позволяет использовать мощный аппарат теории множеств для работы с данными.
👨🔬 Эдгар Франк Кодд (1923–2003)
Британский учёный, создавший реляционную модель данных в 1970 году. Он применил математический подход к БД, основанный на теории множеств. Это была революция: вместо сложных иерархических структур — простые и понятные таблицы!
🔒 Целостность в реляционной модели
Обеспечивается двумя принципами:
- Уникальность идентификации: каждый объект должен однозначно определяться
- Корректность связей: связи между таблицами должны быть правильными
Реляционная модель: элегантность таблиц и мощь математики
12.4. Реляционные базы данных: архитектура и связи
Структура реляционной таблицы
Основным объектом реляционной БД является таблица. Каждая такая таблица, называемая реляционной таблицей или отношением, обладает следующими свойствами:
📋 Однородность столбцов
Все столбцы в таблице однородные, т. е. все элементы в одном столбце имеют одинаковый тип и максимально допустимый размер
🏷️ Уникальные имена
Каждый столбец имеет уникальное имя
✨ Уникальные строки
Одинаковые строки в таблице отсутствуют
🔄 Порядок не важен
Порядок следования строк и столбцов в таблице не имеет значения
📝 Основные элементы реляционной таблицы
- Поле (столбец) — элементарная единица данных, соответствует одному атрибуту сущности
- Запись (строка) — набор логически связанных полей, описывающий один конкретный объект
🌊 Пример: таблица "КРУПНЕЙШИЕ ОЗЕРА"
Структура этой таблицы:
КРУПНЕЙШИЕ ОЗЕРА
НАЗВАНИЕ
МАТЕРИК
МАКСИМАЛЬНАЯ ГЛУБИНА
ПЛОЩАДЬ
Первичный ключ: как отличить одно от другого?
🔑 Определение
Первичный ключ (идентификатор) — это поле или набор полей, которые однозначно определяют каждую запись в таблице.
✅ Свойства первичного ключа
- Однозначная идентификация: по значению ключа можно найти ровно одну запись
- Отсутствие избыточности: удаление любого поля из составного ключа нарушит уникальность
📌 Типы ключей
- Простой ключ — состоит из одного поля
- Составной ключ — включает несколько полей
💡 Пример
В таблице "КРУПНЕЙШИЕ ОЗЕРА" первичным ключом может быть поле НАЗВАНИЕ (названия крупных озёр уникальны).
Связи между таблицами: соединяем данные
Для хранения сложной информации часто используют несколько связанных таблиц. Связь устанавливается через ключевые поля.
🔗 Внешний ключ
Внешний ключ — это поле в одной таблице, которое ссылается на первичный ключ другой таблицы.
Связь "один к одному" (1:1)
⚙️ Условие
Связь установлена по совпадающим первичным ключам.
Пример:
УЧЕНИК УЧЕБНЫЙ_ГОД
- Номер личного дела (ключ) ←→ - Номер личного дела (ключ)
- Фамилия - Предмет 1
- Имя - Предмет 2
- Отчество - Предмет 3
- Дата рождения - ...
- Класс - Результат
Связь "один ко многим" (1:М)
⚙️ Условие
Ключевое поле главной таблицы введено как внешний ключ в подчинённую таблицу.
Пример:
УЧЕБНЫЙ_ГОД (главная) ПООЩРЕНИЕ (подчинённая)
- Номер личного дела (ключ) ← - Результат (ключ)
- Предмет 1 ← - Средний балл
- Предмет 2
- ...
- Результат (внешний ключ) ──┘
Один ученик (одна запись в УЧЕБНЫЙ_ГОД) может получить несколько поощрений (несколько записей в ПООЩРЕНИЕ).
Связь "многие ко многим" (М:М)
⚙️ Условие
Реализуется через третью связующую таблицу. Связь М:М — это комбинация двух связей 1:М.
Пример: библиотека
ЧИТАТЕЛЬ (главная) АБОНЕМЕНТ (связующая) КНИГА (главная)
- Код читателя (ключ) ←─────── - Код выдачи (ключ) ───────→ - Код книги (ключ)
- Фамилия - Код читателя (внеш.) - Автор
- Имя - Код книги (внеш.) - Название
- Отчество - Дата выдачи - Год издания
- Адрес - Дата возврата - Залоговая цена
Один читатель может взять много книг, и одна книга может быть взята многими читателями (в разное время).
Связи между таблицами: от простых отношений к сложным зависимостям
✅ Ключевые выводы
🤔 Проверь себя
Эти задачи помогут глубже понять материал и применить знания на практике
1. Кейс-задача: Стриминговый сервис
Ты разрабатываешь БД для стримингового сервиса (аналог Twitch). Какие сущности тебе понадобятся? Какие связи между ними? Попробуй построить ER-модель для этой предметной области.
Подсказка: Подумай о стримерах, зрителях, трансляциях, донатах, чате...
2. Мысленный эксперимент: Скорость поиска
Почему поиск в Интернете работает за секунды, а поиск файла на компьютере может занять минуты, хотя объём данных в Интернете в миллионы раз больше? Как индексация данных решает эту проблему?
Подумай: Что происходит, когда файловая система компьютера индексирует файлы? Как работают поисковые роботы?
3. Аналогия для младших
Объясни младшему брату или сестре (лет 10), что такое база данных и зачем она нужна, используя аналогию с чем-то понятным из их жизни (например, с коллекцией игрушек, библиотекой или школой).
4. Анализ социальной сети
В социальной сети есть сущности ПОЛЬЗОВАТЕЛЬ и ПОСТ. Какой тип связи между ними? А если добавить сущность КОММЕНТАРИЙ? А ЛАЙК? Построй схему связей.
Дополнительно: Какие атрибуты должны быть у каждой сущности? Что будет первичным ключом?
5. Проблемная ситуация: Выбор ключа
В таблице "УЧЕНИКИ" есть поля: ИМЯ, ФАМИЛИЯ, КЛАСС, ДАТА_РОЖДЕНИЯ. Можно ли использовать поле ФАМИЛИЯ как первичный ключ? Почему да или почему нет? Что можно использовать вместо этого?
Подумай: Бывают ли однофамильцы? Что делает запись уникальной?
6. Практическое применение
Найди в интернете любую информационную систему (например, расписание электричек, онлайн-магазин, портал госуслуг). Попробуй представить, какие таблицы и связи могут быть в её БД.
7. Критическое мышление: Сравнение моделей
В чём главное преимущество реляционной модели перед иерархической и сетевой? В каких случаях иерархическая модель может быть эффективнее?
Подумай: Файловая система компьютера — это какая модель?
8. Анализ фрагмента БД: Выставка
Таблица 1 (Страна - Участник):
- Великобритания - Стив
- Германия - Мейер
- США - Кинкейд
- Россия - Сафронов
Таблица 2 (Участник - Жанр):
- Глазунов - Натюрморт
- Селби - Пейзаж
- Сафронов - Портрет
- Мейер - Пейзаж
Вопросы:
- Охарактеризуйте связь между представленными таблицами БД
- Художники из скольких стран представили на выставке пейзажи?
- Представьте всю информацию в одной таблице
- Представьте всю информацию в форме графа
9. Анализ родственных связей
Дан фрагмент БД о родственных отношениях с двумя таблицами:
Таблица 1: ID, Фамилия И.О., Пол
Таблица 2: ID Родителя, ID Ребёнка
Задания:
- Представьте информацию в форме графа
- Определите количество внуков у конкретного человека
- Найдите информацию о скольких супружеских парах представлена
- Определите родственные связи (дяди, тёти и т.д.)
10. Проектирование БД: Концертный зал
Построй модель «сущность–связь» для предметной области «Концертный зал».
Подумай:
- Какие сущности нужны? (Артист, Концерт, Зал, Билет, Посетитель...)
- Какие атрибуты у каждой сущности?
- Какие связи между сущностями и какого типа?
📝 Вопросы для самопроверки
1. Для чего нужно упорядоченное хранение данных?
Подумай о скорости поиска, удобстве работы, исключении дублирования и противоречий...
2. Что такое информационная система? Каково основное назначение информационных систем?
Вспомни определение и примеры из реальной жизни.
3. Имеете ли вы опыт использования каких-либо информационных систем?
Приведи конкретные примеры систем, которыми ты пользовался сегодня.
4. Что такое база данных? Как связаны информационная система и база данных?
Подумай об аналогии: БД — это книги, а ИС — это вся библиотека с системой поиска.
5. Что такое предметная область? Как представляются объекты предметной области?
Вспомни примеры: школа, больница, магазин...
6. Что такое сущность? Что такое экземпляр сущности? Приведите примеры.
Например: УЧЕНИК — это сущность, а Иванов Иван — это экземпляр.
7. Что называют моделью «сущность–связь»?
Вспомни графические обозначения: прямоугольники, эллипсы, ромбы.
8. Назовите типы связей между сущностями предметной области
1:1, 1:М, М:1, М:М — приведи примеры для каждого типа.
9. Что такое модель данных? Для чего она создаётся?
Модель данных — это способ организации данных и операций над ними.
10. Опишите иерархическую модель данных
Вспомни структуру дерева, правило целостности, команды для работы.
11. Опишите сетевую модель данных
Чем она отличается от иерархической? В чём её преимущества и недостатки?
12. Опишите реляционную модель данных
Почему таблицы? Какова роль Эдгара Кодда?
13. Опишите таблицу реляционной БД
Вспомни четыре основных свойства реляционной таблицы.
14. Что такое ключевое поле? Каковы требования к ключевому полю?
Первичный ключ должен однозначно идентифицировать запись и не содержать избыточности.
15. Какого типа связи могут быть установлены между таблицами реляционной БД?
1:1, 1:М, М:М — охарактеризуй каждый тип с примерами.