Открыть сервис

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

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

Основные понятия

Объект

Объект — это базовый элемент модели, который представляет собой конкретную сущность предметной области. Каждый объект имеет:

  • Уникальный идентификатор (OID — Object Identifier), который не зависит от значений его атрибутов и не изменяется в течение всего времени существования объекта.
  • Состояние — совокупность значений атрибутов (свойств), описывающих текущие характеристики объекта.
  • Поведение — набор методов (процедур или функций), которые могут быть выполнены над объектом или самим объектом.

Класс

Класс — это шаблон (тип) для создания объектов. Он определяет структуру атрибутов и методов, которыми будут обладать все объекты данного класса. Объекты, созданные на основе одного класса, называются экземплярами этого класса. Например, класс «Студент» может включать атрибуты «ФИО», «Группа», «Средний балл» и методы «Зачислить», «Отчислить», «Изменить группу».

Инкапсуляция

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

Наследование

Наследование — механизм, позволяющий создавать новый класс (подкласс, производный класс) на основе существующего (суперкласса, базового класса). Подкласс наследует все атрибуты и методы суперкласса, а также может добавлять собственные или переопределять унаследованные. Например, класс «Аспирант» может наследовать от класса «Студент», добавляя атрибут «Тема диссертации».

Полиморфизм

Полиморфизм — способность объектов разных классов, имеющих общего предка, по-разному реагировать на одно и то же сообщение (вызов одного и того же метода). Это позволяет единообразно обрабатывать объекты различных типов, если они поддерживают общий интерфейс. Например, метод «Рассчитать стипендию» может по-разному вычисляться для студентов и аспирантов.

Связи между объектами

В объектно-ориентированной модели данных выделяют несколько типов связей:

  • Ассоциация — структурная связь между объектами разных классов (например, «Студент учится в Группе»).
  • Агрегация — отношение «часть-целое», при котором объект-часть может существовать независимо от объекта-целого (например, «Компьютер состоит из Процессора, Памяти и Диска»).
  • Композиция — более строгая форма агрегации, при которой объект-часть не может существовать без объекта-целого (например, «Страница является частью Книги»).
  • Обобщение — отношение «является» (is-a), реализуемое через наследование.

История развития

Идеи объектно-ориентированного подхода начали формироваться в 1960-х годах. Язык программирования Simula-67, разработанный Оле-Йоханом Далем и Кристеном Нюгором, впервые ввёл понятия классов и объектов. В 1970-х годах Алан Кэй разработал язык Smalltalk, который заложил основы современного объектно-ориентированного программирования, включая полиморфизм и динамическую типизацию.

Применение объектно-ориентированных принципов к базам данных началось в 1980-х годах. В 1985 году была опубликована статья «Объектно-ориентированные базы данных» (Object-Oriented Databases), а в 1989 году — манифест объектно-ориентированных систем управления базами данных (ООСУБД), авторами которого стали Малкольм Аткинсон, Дэвид Дьюитт и другие. В 1990-х годах появились первые коммерческие ООСУБД, такие как ObjectStore, GemStone, Versant. В 1997 году был принят стандарт ODMG (Object Data Management Group), который определял модель данных и язык запросов OQL (Object Query Language).

В 2000-х годах объектно-ориентированная модель данных оказала значительное влияние на развитие реляционных СУБД, которые начали внедрять объектно-реляционные расширения (SQL:1999, SQL:2003). В настоящее время чисто объектно-ориентированные СУБД занимают нишевую позицию, уступая по популярности реляционным и NoSQL-системам, однако объектно-ориентированный подход широко используется в объектно-реляционных СУБД (Oracle, PostgreSQL) и в объектно-ориентированных расширениях языков программирования.

Сравнение с реляционной моделью

Объектно-ориентированная модель данных отличается от реляционной модели по нескольким ключевым параметрам:

ХарактеристикаРеляционная модельОбъектно-ориентированная модель
Единица данныхОтношение (таблица)Объект
ИдентификацияПервичный ключ (значения атрибутов)Уникальный идентификатор (OID)
СвязиВнешние ключиПрямые ссылки (указатели)
ПоведениеОтсутствует (только данные)Включает методы
НаследованиеНе поддерживаетсяПоддерживается
Сложность моделированияНормализация, разбиение на таблицыЕстественное представление сущностей

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

Применение

Объектно-ориентированная модель данных используется в следующих областях:

  • Системы автоматизированного проектирования (САПР) — для хранения сложных геометрических и конструкторских данных.
  • Геоинформационные системы (ГИС) — для представления пространственных объектов (здания, дороги, реки) с их атрибутами и поведением.
  • Мультимедийные базы данных — для хранения изображений, видео, аудио с метаданными и методами обработки.
  • Научные и инженерные расчёты — для моделирования сложных физических процессов.
  • Телекоммуникационные системы — для управления сетевыми объектами (маршрутизаторы, коммутаторы).

Критика

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

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

Современное состояние

В настоящее время объектно-ориентированная модель данных редко используется в чистом виде. Большее распространение получили объектно-реляционные СУБД (Oracle, PostgreSQL, Microsoft SQL Server), которые сочетают реляционное хранение с объектно-ориентированными возможностями (пользовательские типы данных, наследование таблиц, методы). Кроме того, объектно-ориентированный подход активно применяется в NoSQL-системах, таких как документо-ориентированные СУБД (MongoDB, Couchbase), где данные хранятся в виде JSON-документов, напоминающих объекты.

Источники

  1. Аткинсон М., Дьюитт Д., Майер Д., Бансилон Ф., Диттрих К., Ким В., Цуру С. Манифест объектно-ориентированных систем баз данных (1989).
  2. Ким В. Введение в объектно-ориентированные базы данных. — MIT Press, 1990.
  3. Каттелл Р. Руководство по объектно-ориентированным базам данных. — Addison-Wesley, 1991.
  4. Стандарт ODMG 3.0 (1997).
  5. Коннолли Т., Бегг К. Базы данных: проектирование, реализация и сопровождение. — 6-е изд. — Вильямс, 2017.
  6. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных: полный курс. — Вильямс, 2003.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →