Сущность ООБД

Суть объектно-ориентированной БД определяется объектно-ориентированным подходом (рис. 7.1), который подразумевает объектно-ориентированное проектирование и объектно-ориентированное программирование.

Рис. 7.1. Объектно-ориентированный подход

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

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

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

Рис. 7.2. Объектно-ориентированное проектирование

Объектно-ориентированное программирование берет за основу модель атомарного элемента (рис. 7.1).

Дело в том, что, несмотря на мощные средства отладки программ, ДЛЯ повышения производительности процедуры программирования целесообразно отлаживать программы последовательно, по блокам. Программа в целом отлаживается быстрее, если блоки были отлажены заранее. Эти предпосылки и положены в основу объектно-ориентированного программирования.

Любая математическая модель имеет вид, представленный на рис. 7.1, а сложная – на рис. 7.3.

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

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

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

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

Инкапсуляция – выделение класса с доступом к нему через свойства или методы.

Рис. 7.3. Объектно-ориентированное программирование

Наследование – трансформация класса путем изменения свойств и методов с помощью методов, называемых конструктором и деструктором.

Все классы (компоненты) строятся по иерархическому принципу с происхождением от некоторого исходного класса.

Полиморфизм позволяет использовать метод с одним именем как в базовом, так и в производных классах. Дело в том, что количество классов значительно: уже сейчас оно приближается к ста и продолжает расти. Если для производных классов применять для однотипных, "похожих" методов (например, начертание квадрата и окружности) разные имена, пользователю, особенно начинающему, будет сложно освоиться с таким разнообразием имен.

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

1. В качестве значения столбца может быть использован произвольный кортеж. Иными словами, столбец может являться как бы некоторой другой таблицей. Таким образом, создается возможность реализации таблиц с нелинейной структурой.

2. Процедура манипуляции данными позволяет присоединять процедуры, определенные значениями столбцов.

3. Данные столбцов могут наследоваться.

4. Элементами отношений могут служить нс только отдельные элементы, как в реляционных БД, но и множества.

5. Формируются классы данных, которые организуют столбцы в иерархию.

Базовым языком ООБД чаще всего является С++. Для работы с такими ООБД разрабатывается новый вариант языка программирования SQL, получивший название SQL3 и содержащий внутри себя в качестве частного случая реляционную модель (SQL2). Если SQL2 определяет семь способов связывания со стандартными языками программирования, в SQL3 это количество предполагается увеличить.

В технологии разработки ООБД конкурирует два направления.

• Distributed Object Linking and Embedding (OLE) фирмы Microsoft.

• Common Object Request Broker Architecture (CORBA) группы OBDMG, поддерживаемая фирмами IBM, Novell, DEC, с ориентацией на все платформы. В рамках этого направления выделены и сформированы указанные ранее язык определения объектов Object Definition Language (ODL); объектный язык запроса Object Query Language (OQL); язык определения интерфейсов Interface Definition Language (IDL).

Во втором направлении обычно выделяют [4] два стандарта управления БД:

• ODL/OQL, в котором объекты и методы формируются обычно с помощью языка программирования С;

• язык программирования SQL3, некоторые особенности которого описаны в гл. 9.

Необходимо отметить, что к объектно-ориентированным возможно отнести только те базы данных, у которых все структурные элементы реализации (см. рис. 7.2) построены с использованием объектно-ориентированного подхода. Если хотя бы один структурный элемент реализации не использует объектно-ориентированный подход, говорят об объектно-реляционной базе данных (ОРБД), которые будут представлены подробнее в гл. 8.

Таким образом, чтобы воспользоваться объектно-ориентированным подходом в построении собственно БД, необходимо:

1) провести инкапсуляцию данных, т. е. выделить классы и объекты;

2) определить возможные виды структуры реализуемых таблиц;

3) создать наследование классов данных;

4) обеспечить полиморфизм.

Реализация даже первой позиции неоднозначна и различна, например в ООСУБД и ОРСУБД. Имеется некоторое отличие даже в рамках различных ООСУБД.

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

В ней выделяют классы типов данных и классы самих данных (классы объектов, таблицы).

Если провести аналогию с терминами реляционной БД, то понятию "класс (объект)" ООБД соответствует примерно понятие "таблица", а понятию "свойство" – "поле (столбец) таблицы".

В качестве свойств [38, 40] приняты константы, ссылки на объекты, встроенные объекты, потоки данных (BLOB и CLOB), коллекции в виде массивов (Array) и списков (List), многомерные свойства. К свойствам относят и связи между объектами.

Для свойств имеются типы, основными из которых являются Currency (денежный), Date, Float, Integer, List (список), Name (имя), Numeric, Status (ошибки), String.

В качестве типов свойств могут выступать связи, которые [40| можно разделить на простые, реализуемые ссылками, и отношения, иногда называемые ассоциациями. При ссылке в качестве типа свойств выступает класс (объект), с которым связывается данное свойство. Возможно встраивание одного объекта в другой. В ассоциациях выделяют отношения ONE-TO-MANY (1:М) и PARENT- CHILDREN (родитель – дети).

Различают три основные группы методов: кол (на языке Cache ObjectScript), выражение (фрагмент кода, вызываемый по значению), вызов. Нетрудно видеть, что данные ячеек неатомарны.

Структура ООБД может быть построена различными способами: с помощью визуального языка, языков программирования Cache ObjectScript, SQL.

В других ООСУБД для этих целей часто используют язык С++.

ООБД в рамках системы OLTP и OLAP взаимодействует с многомерной моделью данных (ММД). Обсудим специфику ММД.