Найти тему

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

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

Стандартизованная объектно-ориентированной модель описана в рекомен­дациях стандарта ODMG-93 (Object Database Management Group — группа уп­равления объектно-ориентированными базами данных). Реализовать в полном объеме рекомендации ODMG-93 пока не удается. Для иллюстрации ключевых идей рассмотрим несколько упрощенную модель объектно-ориентированной БД.

Структура объектно-ориентированной БД графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описы­ваются некоторым стандартным типом (например, строковым — string) или типом, конструируемым пользователем (определяется как class).

Значением свойства типа string является строка символов. Значение свойства типа class есть объект, являющийся экземпляром соответствую­щего класса. Каждый объект-экземпляр класса считается потомком объек­та, в котором он определен как свойство. Объект-экземпляр класса принад­лежит своему классу и имеет одного родителя. Родовые отношения в БД образуют связную иерархию объектов.

Пример логической структуры объектно-ориентированной БД библио­течного дела приведен на рис. 2.10,

Здесь объект типа БИБЛИОТЕКА является родительским для объек­тов-экземпляров классов АБОНЕНТ, КАТАЛОГ и ВЫДАЧА. Различные объекты типа КНИГА могут иметь одного или разных родителей. Объекты типа КНИГА, имеющие одного и того же родителя, должны различаться по крайней мере инвентарным номером (уникален для каждого экземпляра книги), но имеют одинаковые значения свойств isbn, удк, название и автор.

Логическая структура объектно-ориентированной БД внешне похожа на структуру иерархической БД. Основное отличие между ними состоит в ме­тодах манипулирования данными.

Рис. 2.10. Логическая структура БД библиотечного дела
Рис. 2.10. Логическая структура БД библиотечного дела

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

Рассмотрим кратко понятия инкапсуляции, наследования и полимор­физма применительно к объектно-ориентированной модели БД.

Инкапсуляция ограничивает область видимости имени свойства пре­делами того объекта, в котором оно определено. Так, если в объект типа КАТАЛОГ добавить свойство, задающее телефон автора книги и имеющее название телефон, то мы получим одноименные свойства у объектов АБО­НЕНТ и КАТАЛОГ. Смысл такого свойства будет определяться тем объек­том, в который оно инкапсулировано.

Наследование, наоборот, распространяет область видимости свойства на всех потомков объекта. Так, всем объектам типа КНИГА, являющимся по­томками объекта типа КАТАЛОГ, можно приписать свойства объекта-роди­теля: isbn, удк, название и автор. Если необходимо расширить действие ме­ханизма наследования на объекты, не являющиеся непосредственными родственниками (например, между двумя потомками одного родителя), то в их общем предке определяется абстрактное свойство типа abs. Так, определе­ние абстрактных свойств билет и номер в объекте БИБЛИОТЕКА приводит к наследованию этих свойств всеми дочерними объектами АБОНЕНТ, КНИ­ГА и ВЫДАЧА. Не случайно поэтому значения свойства билет классов АБО­НЕНТ и ВЫДАЧА, показанных на рисунке, будут одинаковыми — 00015.

Полиморфизм в объектно-ориентированных языках программирования означает способность одного и того же программного кода работать с разно­типными данными. Другими словами, он означает допустимость в объек­тах разных типов иметь методы (процедуры или функции) с одинаковыми именами. Во время выполнения объектной программы одни и те же методы оперируют с разными объектами в зависимости от типа аргумента. Приме­нительно к нашей объектно-ориентированной БД полиморфизм означает, что объекты класса КНИГА, имеющие разных родителей из класса КАТА­ЛОГ, могут иметь разный набор свойств. Следовательно, программы работы с объектами класса КНИГА могут содержать полиморфный код.

Поиск в объектно-ориентированной БД состоит в выяснении сходства между объектом, задаваемым пользователем, и объектами, хранящимися в БД. Определяе­мый пользователем объект, называемый объектом-целью (свойство объекта имеет тип goal), в общем случае может представлять собой подмножество всей хранимой в БД иерархии объектов. Объект-цель, а также результат выполнения запроса могут храниться в самой базе. Пример запроса о номерах читательских билетов и именах абонентов, получавших в библиотеке хотя бы одну книгу, показан на рис. 2.11.

Рис.2.11.Фрагмент БД с объектом-целью
Рис.2.11.Фрагмент БД с объектом-целью

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

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

В 90-е годы существовали экспериментальные прототипы объектно-ори­ентированных систем управления базами данных. В настоящее время такие системы получили широкое распространение, в частности, к ним относятся следующие СУБД: РОЕТ (РОЕТ Software), Jasmine(Computer Associates), Versant (Versant Technologies), O2 (Ardent Software), ODB-Jupiter(научно-производственный центр «Интелтек Плюс»), а также Iris, Orion и Postgres.