Лекции · конспект 1 из 9

Введение в БД: история и модели данных

О чём эта тема
Чем данные отличаются от информации, зачем нужны системы управления базами данных и какими бывают модели данных — от иерархических деревьев 1960-х до реляционных таблиц, графов и JSON-документов современных систем.
Аннотация
Конспект начинается с определений: что такое данные по ГОСТ и как информация превращается в данные через формализацию и кодирование. Затем вводятся понятия базы данных, СУБД и модели данных с её тремя обязательными аспектами — структурой, средствами манипуляции и поддержанием целостности. Краткая историческая шкала показывает, как отрасль пришла от перфокарт к реляционной модели Кодда и стандарту SQL. Основная часть — разбор шести моделей данных: иерархической, сетевой, графовой, объектно-ориентированной, документной и реляционной; для каждой описаны устройство, операции, сильные и слабые стороны и реальные применения. Завершается конспект концепциями реляционной модели — отношение, кортеж, атрибут, домен, — знакомством с пространственными базами данных (состав пространственного объекта по ГОСТ Р 52438-2005, вектор и растр, два пути построения геопространственных СУБД) и обзором популярных СУБД, включая российские Postgres Pro и Arenadata DB. Тренажёр проверяет главный практический навык темы: умение подобрать модель данных под задачу.
Пререквизиты
Специальных пререквизитов нет — это первый конспект курса. Пригодятся общие представления о файловой системе и таблицах (например, из Excel).
Мотивация
Каждый, кто хранил результаты работы в папке с файлами «данные_финал_2_испр.xlsx», уже сталкивался с задачей управления данными — и с последствиями её кустарного решения: потерянными версиями, дублями и невозможностью ответить на простой вопрос «сколько всего?» без ручного пересчёта. СУБД — это инженерный ответ на эти проблемы. Но прежде чем писать первый SQL-запрос, нужно понять, какие способы организации данных существуют и почему реляционная модель победила большинство конкурентов — а в некоторых задачах проигрывает графам и документам до сих пор.

1. Данные и информация

В истории вычислительной техники выделяют два больших направления. Сначала машины строили для счёта: сложные математические задачи, численные методы, специализированные языки вроде Fortran. Но со временем на первый план вышло другое направление — надёжное хранение информации, её преобразование и удобный доступ. Именно оно к концу 1960-х годов породило особый класс программного обеспечения — системы управления базами данных (DataBase Management System, DBMS).

Прежде чем говорить о базах данных, разграничим два понятия, которые в быту используются как синонимы.

Определение · ГОСТ 33707-2016 (ISO/IEC 2382:2015)

Данные — представление информации в формализованном виде, пригодном для передачи, интерпретации или обработки людьми или компьютерами.

Определение · ГОСТ 34.320-96

Информация — любой вид знаний о предметах, фактах, понятиях и т. д. проблемной области, которыми обмениваются пользователи информационной системы.

Своё определение информации даёт и закон: согласно Федеральному закону «Об информации, информационных технологиях и о защите информации» от 27.07.2006 № 149-ФЗ информация — это сведения (сообщения, данные) независимо от формы их представления.

Чтобы информация стала данными, её нужно провести через четыре этапа:

  1. Сбор — информация, которую предстоит преобразовать, собирается воедино.
  2. Формализация — информация структурируется: текст разбивается на заголовки и абзацы, определяются форматы (дата, число, строка).
  3. Кодирование — формализованная информация переводится в машинный формат: текст — в байты кодировки UTF-8, изображение — в JPEG.
  4. Хранение — закодированные данные сохраняются на носителе: жёстком диске, в базе данных, в облаке.

2. СУБД, база данных и модель данных

Система управления базами данных (СУБД) — программное обеспечение для эффективной работы с данными: их хранения, организации и доступа к ним. СУБД — основа любой современной информационной системы.

База данных — набор информации, структурированный и хранящийся по определённым правилам: сведения о клиентах, продукции, финансах, связанные между собой и организованные для оптимального доступа.

СУБД не только хранит данные, но и управляет ими: создаёт, изменяет, удаляет записи и выполняет запросы. Для этого служат специализированные языки — прежде всего SQL (Structured Query Language).

Модель данных — формальная теория представления и обработки данных в СУБД. В классической теории она включает не меньше трёх аспектов:

Типичная ошибка Считать, что модель данных — это только «форма таблиц». Модель без средств манипуляции и правил целостности — просто формат файла. Все три аспекта обязательны: например, реляционная модель — это таблицы плюс реляционная алгебра плюс декларативные ограничения целостности.

3. Краткая история баз данных

Хронология развития баз данных и SQL

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

4.1. Иерархическая модель

Иерархическая модель представляет базу данных в виде древовидной структуры из объектов разных уровней. Каждый объект-потомок имеет ровно одного предка, предок может иметь много потомков; объекты с общим предком называют близнецами (в программировании — братьями). Это старейшие СУБД, созданные в 1950–60-х для мейнфреймов — например, Information Management System (IMS) фирмы IBM.

Схема иерархической модели данных

Компоненты иерархической модели:

  1. Поле данных (атрибут) — минимальная неделимая, уникально адресуемая единица хранения данных.
  2. Сегмент данных (запись, record, экземпляр данных) — совокупность полей данных, имеющая уникальную идентификацию (сущность в модели ER).
  3. Экземпляр сегмента — конкретные значения полей.
  4. Дерево — совокупность сегментов, связанных с помощью связи «родитель — потомок».

В иерархической базе данных пользователю доступны несколько ключевых операций, которые позволяют управлять структурами данных, поддерживать актуальность информации и извлекать нужные данные:

Сценарии использования операторов

Манипулирование данными в иерархической БД осуществляется набором навигационных операторов:

Иерархические структуры в современности

В реальной жизни мы часто сталкиваемся со сложными связями «многие-ко-многим»: один студент посещает несколько курсов, и каждый курс посещается множеством студентов. В иерархической модели такие связи отразить сложно — она предполагает строгое подчинение, где каждый элемент имеет одного родителя. В результате для связей M:N требуется дублирование данных, что приводит к избыточности, усложняет управление и увеличивает риск ошибок. Именно поэтому иерархическая модель считается неудобной и устаревшей для многих задач.

Сегодня иерархические БД редко используются для новых проектов: их вытеснили более гибкие реляционные модели. Тем не менее старые иерархические системы продолжают эксплуатироваться — когда они содержат огромные объёмы критически важной информации, миграция которой затруднена или невозможна. Специалисты работают с существующими системами, параллельно разрабатывая инструменты постепенного переноса данных в реляционные базы.

При этом в узкоспециализированных задачах модель не потеряла актуальности — там, где связи строго однонаправленные, «один-ко-многим», иерархия проста и эффективна. Самый знакомый пример — файловая система с вложенными папками. Другой — реестр операционной системы Windows: иерархическая база всех настроек и параметров системы. Просмотреть и даже отредактировать её можно встроенной программой regedit (меню «Пуск» → «Выполнить» → regedit): откроется окно с иерархическим деревом, в котором видно, как организована информация о состоянии системы.

Проблемы иерархической модели Много памяти на хранение, трудный контроль целостности, дублирование данных, медленная запись, болезненная реорганизация структуры и принципиальная невозможность связи «многие-ко-многим».

4.2. Сетевая модель

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

Схема сетевой модели данных

Сетевая модель данных состоит из нескольких основных компонентов:

  1. Сегменты — основные элементы структуры. Каждый сегмент представляет собой набор связанных записей, которые могут быть связаны с другими сегментами; у каждого сегмента есть уникальный идентификатор для обращения к нему и работы с содержимым.
  2. Записи — наборы полей с данными. Каждая запись имеет уникальный идентификатор; записи могут быть связаны с другими записями, что даёт гибкость в организации данных.
  3. Сети — связи между сегментами и записями. Они определяют отношения между данными и позволяют обращаться к связанным данным; бывают однонаправленными и двунаправленными, что задаёт направление доступа.
  4. Владение — отношение между сегментами и записями: сегмент-владелец имеет доступ к содержимому записи и может изменять его. Владение тоже бывает однонаправленным или двунаправленным.
  5. Связи — отношения между сегментами и записями, позволяющие связывать данные между собой; однозначные или многозначные — от этого зависит, сколько записей может быть связано с одним сегментом.

Пример: сетевая модель для финансового отдела

Рассмотрим, как организованы отношения между типами записей в процессе продаж: SALES-MAN (продавец), CUSTOMER (заказчик), PRODUCT (продукт), INVOICE (счёт), PAYMENT (платёж) и INVOICE-LINE (строка счёта).

Сетевая модель данных отдела продаж

Плюс модели — она обеспечивает атрибутивную целостность. Проблемы: сущности и связи хранятся отдельно, из-за чего появляется задача поддержания ссылочной целостности.

4.3. Графовые модели

Графовая база данных — развитие сетевой модели в виде графа и его обобщений. Графовые СУБД применяются для социальных сетей, биоинформатики и семантической паутины; на задачах с естественной графовой структурой они могут существенно превосходить реляционные по производительности и наглядности.

Пример графовой модели данных

Мартин Клеппман в книге «Designing Data-Intensive Applications» формулирует практический признак: если в приложении планируется много сущностей и связей «многие-ко-многим» — это довод в пользу графовой СУБД. А если существующее приложение тратит основное время на обход связей — тем более: обход связей в графе «практически ничего не стоит». Пример промышленной системы — Amazon Neptune, облачная графовая СУБД с поддержкой моделей RDF и LPG и языков запросов SPARQL и Gremlin.

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

Семантические базы данных

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

Основные строительные блоки семантических баз:

Ключевая идея RDF — представление данных тройками «субъект — предикат — объект»:

Субъект
«Анна»
Предикат
«имеет возраст»
Объект
«25»

Рассмотрим элементы тройки подробнее.

Примеры публичных RDF-проектов:

Словари для описания данных: Dublin Core (DC) — атрибуты библиотечных метаданных; Friend-of-a-Friend (FOAF) — описание людей, их отношений и деятельности; Semantically-Interlinked Online Communities (SIOC) — онлайн-сообщества; Description of a Project (DOAP) — описание проектов; Simple Knowledge Organization System (SKOS) — стандартизованные таксономии; Creative Commons (CC) — описание лицензий.

4.4. Объектно-ориентированные модели

Объектные, или объектно-ориентированные, модели основаны на представлении данных в виде объектов, объединяющих в себе как сами данные, так и методы их обработки. Это позволяет естественно описывать реальные объекты и связи между ними, а также обрабатывать их с помощью методов и операций, применяемых к объектам.

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

Компоненты объектно-ориентированной модели:

Схема объектно-ориентированной модели данных

Стандарт ODMG

ODMG (Object Data Management Group) — консорциум поставщиков объектно-ориентированных БД и других заинтересованных организаций, созданный в 1991 году для разработки стандарта на хранение объектов в базах данных. Опубликованная вторая версия стандарта — ODMG 2.0 — разработана на основе трёх существующих стандартов: управления базами данных (SQL), объектов (стандарты OMG — Object Management Group) и объектно-ориентированных языков программирования (C++, Smalltalk, Java).

ODMG добавляет в ОО-языки возможности взаимодействия с базами данных: определяются средства долговременного хранения объектов, расширяется семантика языка, вносятся операторы управления данными. Стандарт состоит из нескольких частей:

  1. Объектная модель — унифицированная основа стандарта, расширяющая модель OMG связями и транзакциями. Ключевые концепции: атрибуты и связи объектов, методы (поведение), множественное наследование, идентификаторы объектов (ключи), совокупности объектов (списки, наборы, массивы), блокировка объектов и изоляция доступа, операции над базой данных.
  2. Язык описания объектов ODL (Object Definition Language) — средство определения схемы базы данных, по аналогии с DDL реляционных СУБД. ODL — расширение IDL (Interface Definition Language) модели OMG: он описывает объектные типы, атрибуты, связи и методы, создавая слой абстрактных описаний, независимый и от языка программирования, и от СУБД. Детали реализации методов ODL не рассматривает, поэтому схему можно переносить между ODMG-совместимыми СУБД и транслировать в другие DDL.
  3. Язык объектных запросов OQL (Object Query Language) — SQL-подобный декларативный язык извлечения объектов, включая высокоуровневые примитивы для наборов объектов и объектных структур. Синтаксис SELECT из SQL-92 — подмножество OQL: SELECT-запросы к реляционным таблицам сохраняют работоспособность с наборами объектов ODMG. OQL-запросы можно вызывать из ОО-языка и наоборот; язык обеспечивает целостность объектов через вызов их методов.
  4. Связывание с ОО-языками — стандарт определяет OML (Object Manipulation Language), расширяющий C++, Smalltalk и Java средствами манипулирования и хранения объектов, включая OQL, навигацию и транзакции. У каждого языка свой OML, поэтому разработчик остаётся в одной языковой среде.

При объектном подходе выделяют следующие ограничения реляционной технологии:

  1. Неестественное представление сложных данных. Реляционная модель моделирует всё плоскими отношениями (таблицами); поскольку все отношения принадлежат одному уровню, многие значимые связи либо теряются, либо поддерживаются в конкретной прикладной программе.
  2. Трудно смоделировать свойства данных. Для естественного моделирования сложных структур пользователю нужны собственные типы данных, а не только предоставляемые СУБД.
  3. Нельзя определить операции над данными типа. Реляционная модель не позволяет связать с типом данных набор операций — их приходится задавать в приложении.
  4. Нет послойного просмотра. Данные нельзя рассматривать на разных уровнях абстракции, отвлекаясь от ненужных деталей.
  5. Усложнённый доступ к базе данных. Интерфейс между языком программирования и языком БД сложен: у каждого языка свой набор типов и своя модель вычислений, поэтому при обращении из C++ данные подвергаются структурной трансформации при передаче в базу и из неё.

Примеры применения

4.5. Документо-ориентированные модели

Документоориентированные БД — тип баз данных, предназначенный для хранения и запроса данных в виде документов, подобных JSON. Документо-ориентированная модель специально создана для хранения иерархических структур данных — документов. Документ — это набор атрибутов (пар «ключ — значение»); документ может быть вложен в документ. Представление данных — формат JSON или XML. Такие базы применяются в системах управления содержимым, издательском деле, документальном поиске и подобных задачах.

СУБД этого типа управляет так называемым документом — набором значений и данных объекта. Важно, что один документ может содержать сведения, которые в реляционной СУБД обычно распределяются по нескольким таблицам. Вдобавок документоориентированные БД не требуют, чтобы все документы имели одинаковую структуру. Доступ к документам даётся через ключ — уникальный идентификатор документа.

Сравнение табличного и документного хранения
Документо-ориентированная база данных

Примеры СУБД: MongoDB, CouchDB, Couchbase, MarkLogic, eXist, Berkeley DB. Применения: eBay использует MongoDB для данных о пользователях и транзакциях; BBC — CouchDB для мультимедийного контента; The New York Times — Firebase Firestore; Capital One — Amazon DocumentDB для финансовых данных.

4.6. Реляционная модель

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

Реляционная модель включает следующие компоненты:

  1. Структурный аспект — данные в базе представляют собой набор отношений.
  2. Аспект целостности — отношения отвечают определённым условиям целостности; РМД поддерживает декларативные ограничения уровня домена (типа данных), уровня отношения и уровня базы данных.
  3. Аспект обработки (манипулирования) — РМД поддерживает операторы манипулирования отношениями: реляционную алгебру и реляционное исчисление.
Реляционная таблица

Примеры: PostgreSQL, MySQL, Oracle Database. Подробно реляционная модель разобрана в лекции 2.

4.7. Сравнение моделей

АспектОбъектнаяРеляционнаяИерархическая
Основаобъекты, свойства, методытаблицы, связанные ключамидерево «родитель — потомок»
Принципыинкапсуляция, наследование, полиморфизмнормализация, целостность, JOINстрогая подчинённость узлов
Сильные стороныгибкость, повторное использование кодапростота, эффективные запросыбыстрый доступ к связанным узлам
Типичное применениемоделирование сложных предметных областейуправление данными организацийфайловые системы, реестры

Каждая модель имеет свои преимущества и недостатки; выбор зависит от требований проекта и характера данных — это и тренирует симулятор ниже.

5. Тренажёр: подбери модель данных

Восемь коротких описаний реальных задач. Для каждой выберите модель данных, которая подходит лучше всего. После ответа тренажёр объясняет, почему правильная модель именно такая — формулировки объяснений опираются на признаки из разделов выше.

Тренажёр: какая модель данных подойдёт?
Выберите модель — здесь появится разбор.

6. Главные концепции реляционных баз данных

Реляционная модель организует данные в двумерные таблицы. Каждая реляционная таблица обладает свойствами: каждый элемент — один элемент данных; все ячейки столбца однородны по типу; каждый столбец имеет уникальное имя; одинаковые строки отсутствуют; порядок строк и столбцов произволен.

Отношение (relation) — фундаментальное понятие модели, давшее ей имя. Таблица — лишь графическая интерпретация отношения: столбцы соответствуют вхождениям доменов, строки — кортежам.

Отношение: заголовок, кортежи, атрибуты, домены

Число кортежей называют кардинальным числом (мощностью) отношения, число атрибутов — его размерностью. Отношение состоит из заголовка (схемы) и тела; название атрибута может включать имя домена через двоеточие (например, UnitPrice:Currency).

Три важных следствия определения. Во-первых, отношение не упорядочено — понятие «номер строки» к нему неприменимо: для отношений не существует никакого внутреннего порядка. Во-вторых, отношение может иметь нулевое число кортежей — пустое отношение остаётся отношением. В-третьих, отношение — это множество: его элементы по определению уникально идентифицируемы, поэтому каждая строка таблицы-отношения должна быть уникально идентифицируемой, а записи не должны повторяться.

Таблица, представляющая отношение, обладает рядом свойств:

Формально: заголовок Hr — конечное множество пар ⟨A, T⟩ (имя атрибута и имя типа или домена); кортеж tr — множество триплетов ⟨A, T, v⟩, где v — допустимое значение типа T; тело Br — неупорядоченное множество различных кортежей; значение Vr отношения — пара множеств Hr и Br. Первичный ключ — минимальный набор атрибутов, однозначно определяющий кортеж; при добавлении новых записей он обязан оставаться ключом (поэтому «Фамилия + Имя + Отчество» — плохой ключ, даже если тёзок пока нет).

6.1. Домен

Домен определяет «вид» данных, которые представляет данный атрибут. Более чёткое определение: домен — это набор всех допустимых значений, которые может содержать данный атрибут. Понятие домена намного шире понятия «тип данных», поскольку определение домена включает более детальное описание допустимых значений. Домен — это тип данных плюс логические правила, определённые для данной сущности; при этом логические правила — механизм реализации целостности данных, а не элемент их описания.

Типичная ошибка Отождествлять домен с типом данных. Тип данных — физическая концепция («целое число»), домен — логическая («возраст»). Домен шире: он включает тип и логические правила допустимости значений. Возраст −5 корректен как целое число, но не входит в домен «возраст».

7. Пространственные базы данных

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

Определение

Пространственная база данных (spatial database) — база данных с типами данных, специально разработанными для хранения пространственных объектов.

Геометки на схеме улиц города
Пространственная БД хранит объекты, привязанные к местоположению: за каждой «геометкой» стоит запись с координатами и атрибутами.

7.1. Из чего состоит пространственный объект

ГОСТ Р 52438-2005 «Географические информационные системы. Термины и определения» выделяет в пространственном объекте три составляющие:

Карта с сотнями геометок и границами трёх районов
Координатная часть без атрибутов — «месиво из геометок»: видно, где точки, но непонятно, что они означают. Смысл появляется, когда к геометрии присоединяются атрибуты.
Таблица атрибутов слоя дорог в QGIS
Пространственный объект в ГИС: у каждой дороги есть идентификатор (столбец gid), геометрия на карте и атрибуты — название, поселение, длина, ширина, тип покрытия.

7.2. Какие виды объектов бывают

Пространственные данные существуют в двух принципиально разных представлениях. Векторное описывает объекты геометрическими примитивами: точка, линия из узлов, полигон. Растровое покрывает территорию регулярной сеткой ячеек, и значение хранится в каждой ячейке.

Одно и то же озеро с рекой в растровом и векторном представлении
Одно и то же озеро с рекой: слева — растр (закрашенные ячейки сетки), справа — вектор (полигон, линия, точки-узлы). Для каждого объекта имеется атрибутивная информация.
Карта угодий в растровом и векторном виде
Карта угодий (вырубки, болота, леса, луга) в растровом и векторном виде: вектор строится из точек, дуг и полигонов, растр — из ячеек с кодом класса.

С вектором связь «объект → строка таблицы атрибутов» очевидна. А где атрибуты у растра? В структурах вроде ESRI GRID к растру прилагается таблица значений атрибутов (Value Attribute Table, VAT): каждой ячейке присвоен код (Value), а таблица хранит для каждого кода число ячеек (Count) и содержательные атрибуты — например, тип почвы.

Атрибутивная таблица VAT в структуре ESRI GRID
Атрибутивная часть в структуре ESRI GRID: значение ячейки — ключ в таблице VAT, где лежат остальные атрибуты.

7.3. Геопространственные СУБД: два пути

Исторически сложились два подхода к хранению пространственных данных.

Специализированные геоинформационные СУБД. Пример — ArcInfo: система задумана как набор инструментальных средств разработки с большим выбором пространственных функций. Она состоит из двух подсистем — Arc отвечает за пространственные данные, Info — за описательные; поддерживаются векторное, растровое (сеточное) и триангуляционное представления.

Расширения реляционных СУБД. Пример — Oracle Spatial: к обычной реляционной СУБД добавляется новый пространственный тип данных, SQL расширяется операторами для манипуляций с ним, а оптимизатор запросов учится ускорять пространственные операции — например, пространственные соединения.

Куда это ведёт Второй путь победил в открытом ПО: расширение PostGIS добавляет пространственные типы и сотни функций в PostgreSQL — именно эту связку мы используем в курсе. Подробно о PostGIS — в лекции 4, первая пространственная база — в практике 3.

Контрольные вопросы

Источники

  1. ГОСТ 33707-2016 (ISO/IEC 2382:2015). Информационные технологии. Словарь. — М. : Стандартинформ, 2016.
  2. ГОСТ Р ИСО/МЭК 10746-2-2000. Информационная технология. Взаимосвязь открытых систем. Управление данными и открытая распределённая обработка. — М. : Изд-во стандартов, 2000.
  3. ГОСТ 34.320-96. Информационные технологии. Система стандартов по базам данных. Концепции и терминология для концептуальной схемы и информационной базы. — М. : Изд-во стандартов, 1997.
  4. ГОСТ Р 52438-2005. Географические информационные системы. Термины и определения. — М. : Стандартинформ, 2006.
  5. Дейт, К. Дж. Введение в системы баз данных / К. Дж. Дейт. — 8-е изд. — М. : Вильямс, 2005. — 1328 с.
  6. Codd, E. F. A Relational Model of Data for Large Shared Data Banks // Communications of the ACM. — 1970. — Vol. 13, № 6. — P. 377–387.
  7. Клеппман, М. Высоконагруженные приложения. Программирование, масштабирование, поддержка / М. Клеппман. — СПб. : Питер, 2018. — 640 с.
  8. DB-Engines Ranking : [сайт]. — URL: https://db-engines.com/en/ranking (дата обращения: 18.08.2026).