Перейти к содержанию

Общая характеристика моделей данных

Понятие модели данных

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

Она определяет:

  • какие объекты (сущности) описываются;
  • какие у них свойства (атрибуты);
  • как объекты связаны между собой;
  • какие операции можно выполнять над данными;
  • какие ограничения действуют на данные.

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

Основные задачи модели данных:

  • стандартизировать представление информации;
  • обеспечить целостность и непротиворечивость данных;
  • упростить проектирование, сопровождение и развитие базы данных;
  • позволить разным участникам проекта (аналитикам, разработчикам, администраторам) одинаково понимать структуру данных.

Пример:

  • В предметной области «Учебное заведение» есть сущности: Студент, Группа, Преподаватель, Дисциплина.
  • Модель данных показывает, как эти сущности связаны (например, студент относится к одной группе, изучает несколько дисциплин и т.д.).

Классификация моделей данных

Существует два основных подхода к классификации моделей данных:

По уровню абстракции (уровни проектирования)

Эта классификация показывает, насколько близко модель находится к реальной реализации в СУБД:

  • Концептуальная модель
    • Описывает предметную область в терминах сущностей, атрибутов и связей.
    • Не зависит от выбранной СУБД.
    • Используется для согласования с заказчиком.
  • Логическая модель
    • Определяет таблицы, поля, ключи и связи.
    • Ориентирована на конкретную модель БД (чаще реляционную), но не на конкретную СУБД.
    • Используется для проектирования структуры данных.
  • Физическая модель
    • Показывает, как данные будут реально храниться в выбранной СУБД.
    • Учитывает типы данных, индексы, доступ, резервирование.

Каждая модель уточняет предыдущую и приближает проект к реальной базе данных.

По типу организации данных (типовые модели)

Эта классификация показывает, в какой форме структурированы данные:

  • Иерархическая модель — древовидная структура, «родитель — потомок».
  • Сетевая модель — графовая структура с множеством связей.
  • Реляционная модель — таблицы (отношения), основаны на теории множеств.
  • Объектно-ориентированная модель — объекты с атрибутами и методами.
  • Нереляционные (NoSQL) модели — документо-ориентированные, ключ-значение, графовые, колонночные.

Каждая модель имеет свои особенности, области применения, преимущества и ограничения.


Иерархическая модель данных

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

Структура

  • Каждая запись (узел) имеет одного родителя и может иметь несколько потомков.
  • Связи жёстко фиксированы: нельзя создать связь между узлами, не находящимися в отношениях «родитель — потомок».
  • Доступ к данным осуществляется сверху вниз, начиная от корневого узла.

Пример:

image.png

Особенности и свойства

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

Применение

  • Хорошо подходит для статических и строго иерархических структур, например:
    • каталог файловой системы;
    • организационная структура предприятия;
    • справочники и классификаторы.

Примеры СУБД: IBM IMS, Windows Registry.

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


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

Сетевая модель данных — это модель, в которой данные организованы в виде графа, где каждая запись может иметь много связей (отношений) с другими записями.

Структура

  • Основные элементы:
    • Записи (record) — хранят данные об объектах.
    • Связи (set) — определяют отношения между записями.
  • В отличие от иерархической модели, запись может иметь нескольких родителей и несколько потомков.
  • Связи реализуются с помощью указателей (pointer), которые напрямую соединяют связанные записи.

Пример:

image.png

Студент может быть зачислен на много дисциплин, а дисциплина может изучаться многими студентами.

Особенности и свойства

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

Применение

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

Примеры СУБД: IDMS, TurboIMAGE, Raima Database Manager.

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


Реляционная модель данных

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

История и основы

  • Разработана Эдгаром Коддом в 1970 году.
  • Основана на математической теории множеств и логике предикатов.
  • Цель — упростить работу с данными и устранить недостатки иерархических и сетевых моделей.

Структура

  • Отношения (таблицы) — основной объект хранения данных.
  • Кортежи (строки) — отдельные записи в таблице.
  • Атрибуты (столбцы) — характеристики записей.
  • Схема отношения — описание структуры таблицы: названия столбцов и их типы данных.
  • Ключи:
    • Первичный ключ (Primary Key) — уникально идентифицирует запись.
    • Внешний ключ (Foreign Key) — создаёт связь между таблицами.

Пример:

image.png

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

  • 1:1 — каждой записи в таблице A соответствует одна запись в B.
  • 1:М — одной записи в A соответствует много записей в B.
  • М:М — каждая запись в A может быть связана с несколькими в B и наоборот (реализуется через промежуточную таблицу).

Особенности и свойства

  • Строгая структурированность и стандартизованность.
  • Поддержка языка SQL для определения, изменения и запросов данных.
  • Поддержка ограничений целостности (NOT NULL, UNIQUE, CHECK и др.).
  • Возможность нормализации данных для устранения избыточности.
  • Поддержка транзакций и свойств ACID (атомарность, согласованность, изолированность, надёжность).

Применение

  • Универсальны и подходят для большинства приложений:
    • учётные системы;
    • веб-приложения;
    • банковские и финансовые системы;
    • образовательные порталы и др.

Примеры СУБД: MySQL, PostgreSQL, Oracle, MS SQL Server.

Реляционная модель — стандарт де-факто для большинства современных систем управления базами данных благодаря своей гибкости, универсальности и поддержке стандарта SQL.


Объектно-ориентированная модель данных

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

Основные принципы

ООМД наследует ключевые принципы объектно-ориентированного подхода:

  • Инкапсуляция — данные и методы объединены в один объект.
  • Наследование — объекты могут наследовать свойства и методы от других объектов.
  • Полиморфизм — возможность переопределения методов и работы с объектами разных типов единообразно.
  • Идентичность объектов — каждый объект имеет уникальный идентификатор (OID).

Структура

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

Пример:

image.png

Особенности и свойства

  • Позволяет хранить сложные и составные структуры данных (массивы, списки, мультимедиа, геоданные и др.).
  • Снижает разрыв между программным кодом и данными (объекты БД напрямую соответствуют объектам приложения).
  • Поддерживает расширяемость и повторное использование кода.
  • Более сложна в проектировании и требует объектного подхода от разработчиков.

Применение

  • Применяется там, где нужно хранить сложные и слабо структурированные данные:
    • Системы САПР (проектирование);
    • Научные и инженерные базы данных;
    • Геоинформационные системы (ГИС);
    • Хранение мультимедиа.

Примеры СУБД: ObjectDB, db4o, Versant, GemStone.

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


Нереляционные (NoSQL) модели данных

Нереляционные модели данных (NoSQL) — это обобщённое название для баз данных, которые не используют табличную структуру и не требуют фиксированной схемы. Они появились как ответ на рост объёмов и разнообразия данных, а также на необходимость горизонтального масштабирования.

Основные типы NoSQL-моделей

  • Документо-ориентированные

    • Хранят данные в виде документов (обычно JSON или BSON).
    • Каждый документ может иметь уникальную структуру.
    • Примеры: MongoDB, CouchDB.

    image.png

  • Ключ-значение

    • Хранят пары ключ — значение, как ассоциативные массивы.
    • Очень быстрые при простых запросах по ключу.
    • Примеры: Redis, Amazon DynamoDB, Riak.

    image.png

  • Колонночные (широкостолбцовые)

    • Данные организованы по столбцам, а не по строкам.
    • Эффективны при аналитических запросах и больших массивах данных.
    • Примеры: Apache Cassandra, HBase.

    image.png

  • Графовые

    • Хранят данные в виде вершин и рёбер графа.
    • Позволяют быстро выполнять запросы на поиск связей.
    • Примеры: Neo4j, OrientDB.

    image.png

Особенности и свойства

  • Гибкая схема — не требуют заранее определённой структуры.
  • Высокая масштабируемость — легко распределяются между множеством серверов.
  • Высокая производительность при больших объёмах данных и нагрузках.
  • Отсутствие строгой поддержки транзакций ACID (часто используется принцип BASE — «Basically Available, Soft state, Eventually consistent»).
  • Обычно ориентированы на конкретные сценарии использования (ключ-значение, графы и т.д.), а не универсальны, как реляционные БД.

Применение

  • Хранят большие и быстро изменяющиеся данные, например:
    • социальные сети (графовые БД);
    • интернет-магазины и каталоги (документо-ориентированные БД);
    • кэширование и сессии пользователей (ключ-значение);
    • аналитика больших данных (колонночные БД).

NoSQL-модели не заменяют реляционные, а дополняют их, обеспечивая гибкость и масштабируемость там, где это необходимо.


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

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

Модель Структура Тип связей Гибкость схемы Производительность Масштабируемость Применение Примеры СУБД
Иерархическая Дерево Один-ко-многим (жёсткие) Низкая Высокая Низкая Статические иерархии, справочники IBM IMS, Windows Registry
Сетевая Граф Много-ко-многим Средняя Высокая Низкая Сложные взаимосвязанные данные IDMS, TurboIMAGE
Реляционная Таблицы 1:1, 1:М, М:М Высокая Средняя Средняя Универсальные системы учёта и анализа MySQL, PostgreSQL, Oracle, MS SQL Server
Объектно-ориентированная Объекты Ссылки на объекты Высокая Средняя Низкая Сложные структурированные данные ObjectDB, db4o, Versant
NoSQL (документо-ориентированные) JSON-документы Гибкие связи Очень высокая Высокая Очень высокая Каталоги, интернет-магазины, CMS MongoDB, CouchDB
NoSQL (ключ-значение) Пары ключ-значение Нет явных связей Очень высокая Очень высокая Очень высокая Кэширование, сессии, быстрый доступ Redis, DynamoDB, Riak
NoSQL (колонночные) Таблицы по столбцам Нет явных связей Высокая Очень высокая Очень высокая Аналитика больших данных Cassandra, HBase
NoSQL (графовые) Вершины и рёбра графа Много-ко-многим Высокая Высокая Высокая Социальные сети, поисковые системы Neo4j, OrientDB

Таблица показывает, что разные модели ориентированы на разные задачи: реляционные — универсальны, NoSQL — гибкие и масштабируемые, иерархические и сетевые — быстрые, но жёсткие по структуре.