Среди современных промышленных СУБД в настоящее время
преобладают реляционные базы данных (РСУБД). К их достоинствам
следует отнести поддержку стандартного языка SQL, высокую производительность
и безопасность данных. Однако, современные требования к хранению и обработке
информации подразумевают поддержку более сложных структур данных, нежели
те простые типы, которые поддерживают классические реляционные СУБД.
Для обработки сложных объектов были специально созданы объектно-ориентированные
СУБД (ООСУБД). ООСУБД хранят объекты в той форме, в которой они затем обрабатываются.
При этом повышается эффективность обработки сложных объектов, но не поддерживается
стандартный SQL, и создание запросов к данным требует дополнительного кодирования
на объектном языке высокого уровня.
РСУБД более подходят для приложений с высокой сложностью запросов,
но не очень высокой сложностью данных. Напротив, ООСУБД оперируют с очень
сложно организованными данными, но без поддержки сложных запросов.
Появившиеся не так давно объектно-реляционные (ОРСУБД) совмещают объектную и реляционную технологии, одновременно обеспечивая возможность работы как со сложными данными, так и со сложными запросами, что в значительной мере решает проблемы РСУБД и ООСУБД. С одной стороны, они поддерживают стандартный SQL, с другой стороны - обеспечивается создание, хранение и модификация объектов сложной структуры. Появление на рынке объектно-реляционных СУБД нового поколения созданных фирмами Informix, Oracle, IBM и Sybase , существенно увеличивает возможности обработки данных. Вместе с тем, новые возможности драматически усложняют структуру БД. В дополнение к стандартным данным, таким как текст и числа, обычно хранящимся в реляционных СУБД, ОРСУБД позволяют хранить такие сложные объекты, как изображения, карты, документы, видео и др. в естественном формате. ОРСУБД содержат также новые типы связей между объектами БД. Эти особенности не позволяют эффективно проектировать ОРСУБД с помощью традиционных, основанных на построении диаграмм сущность-связь или объектно-ориентированных инструментов.
В 1997 году фирмой Logic Works (в 1998 году слилась с PLATINUM technology) выпущен специализированный инструмент проектирования ОРСУБД - OR*Compass, который в полной мере поддерживает работу INFORMIX-Universal Server (IUS). OR*Compass - достаточно полная среда объектно-реляционного моделирования, позволяющая разрабатывать и генерировать все аспекты ОРСУБД. Техника моделирования OR*Compass основана на стандарте общеизвестного средства моделирования PLATINUM ERwin и дополнена характерными для объектно- реляционной модели конструкциями – такими, как наборы (collections), строчные типы (row types), функции (functions), и др.
Разработчик может описывать БД, используя как графические элементы, так и текстовое описание. В OR*Compass реализован тот же принцип итеративной технологии разработки БД, что и в ERwin. Это означает, что если БД уже сгенерирована, можно, во-первых, вносить изменения в модель (в дальнейшем эти изменения будут добавлены в структуру БД), и, во-вторых, если кто-либо изменил структуру БД, отобразить эти изменения в модели данных. Связи в ОРБД расширяют ссылочную целостность в новой иерархии типов. Итерационная технология OR*Compass позволяет выравнивать эти связи как в модели так и в БД.
Поддержка специальных типов данных. Большинство реляционных СУБД
поддерживают атомарные, то есть подразумевающие единственное значение,
типы данных, которые определяются производителем СУБД. Эти встроеные типы
данных позволяют эффективно работать с текстом, числовыми значениями,
но не позволяют оперировать с более сложными структурами данных, такими
как графические изображения, большие текстовые объекты, аудио и видео записи,
сложные (имеющие множественные значения) данные. OR*Compass поддерживает
как встроенные типы данных, существующие в предыдущих версиях INFORMIX,
так и определяемые пользователем типы данных - Distinct type ( типы данных,
основанные на встроенных типах), а так же типах Opaque type и Row type.
Например, организация может вести расчеты с поставщиками в разной валюте.
Тогда на основе типа данных "money" можно создать тип данных "Доллар США"
и "Российский рубль" и ассоциировать созданый тип данных с соответствующей
колонкой. Интерфейс OR*Compass позволяет легко создать новый тип данных
и описать его свойства (рис.1).
Набор (Collection)- сложный тип данных, позволяющий хранить множественные
значения в одной колонке. Этот тип данных может быть трех типов - set (набор
уникальных значений), multiset (набор неуникальных значений) и list
(набор упорядоченных неуникальных значений). Например, в таблице "Сотрудник"
можно определить колонку "Телефоны" типа set.
Тип – запись (Row type)- сложный тип данных, который позволяет хранить
в одной колонке множественные данные разных типов. Он состоит из групп
связанных элементов данных, называемых полями. Например, можно определить
тип данных "Адрес", состоящий из обычных элементов адреса (полей типа Row)
- почтового индекса, страны, района, города, улицы, дома, квартиры. Каждое
такое поле должно быть описано при определении типа. Тип данных Row может
быть именованным и неименованным. Неименованный тип определяется как тип
данных колонок. После создания нового неименованного Row типа (меню
Insert/Datatype/Row type) и описания полей (меню Insert/Datatype/Row
type field) можно присвоить этот тип какой-либо колонке (диалог Column
Property Shield). Именованный тип создается как объект БД - основа таблицы
типа. На его основе создается типизованная таблица, которая отображается
в модели на уровне таблиц и позволяет наглядно представить поля и правила
для каждого типа. При внесении новой таблицы типа необходимо указать именованный
тип, на основе которого создается таблица.
Для создания типа – записи может быть использован диалог Row Type
Wizard, позволяющий задать свойства типа в диалоговом режиме.
На основе существующего типа-записи можно получать новый тип, который будет дочерним по отношению к старому типу. Родительский и дочерние типы образуют иерархию типов (наследование). Дочерний тип может содержать как поля родительского, так и собственные поля.
OR*Compass позволяет связывать таблицы типов и обычные таблицы (внешние
ключи при этом не мигрируют, их необходимо описывать вручную), а также
получать новую типизованную таблицу из существующей. Иерархию таблиц типов
можно получить и из иерархии типов-записей. Таблица-потомок может включать
все поля таблицы-предка, кроме того потомок может иметь свои собственные
поля, которых нет у предка. Таблица -потомок может также содержать
другие свойства предка - правила ссылочной целостности, триггеры, индексы,
и др. Наследование таблиц наглядно отображается в модели OR*Compass.
Абстрактный тип (Opaque type)- полностью инкапсулированный тип данных, который не может быть получен из встроенных типов данных. Для доступа и манипулирования данными такого типа должны быть определены соответствующие функции и индексы, включая функции сравнения и арифметические функции. В модели OR*Compass можно также использовать DataBlade с встроенными данными типа Opaque и соответствующими объектами и функциями. Для создания абстрактного типа необходимо имя и область определения, параметры хранения и требуемые функции.
Функциональные индексы (индексы, значения которых вычисляются
из предварительно заданных функций) . При описании соответствующей индексу
функции необходимо задать ее имя, параметры (колонки таблицы) и возвращаемое
значение. Возвращаемое значение записывается как индекс. Примером
значения функционального индекса может быть стаж работы сотрудника,
который вычисляется из даты поступления и текущей даты. OR*Compass
позволяет задать имя функционального индекса, его описание, список аргументов,
возвращаемое значение, свойства, определяемые пользователем и т.д.
Поддержка DataBlade. DataBlade - набор объектов, типов данных
и подпрограмм, которые разрабатываются и продаются для использования
с БД INFORMIX-Dynamic Server совместно с Universal Data Option (INFORMIX).
DataBlade обеспечивает расширенные функциональные возможности базы данных,
например, для обработки графики, решения финансовых задач или работы с
видеоданными.
OR*Compass может импортировать типы данных, объекты и функции в DataBlade.
В дополнение к моделированию данных, использующему DataBlade компоненты,
можно провести обратное проектирование приобретенных DataBlade и
представить их структуру в виде графической модели, а также самим по модели
сгенерировать собственный DataBlade. Для импорта DataBlade в вашу модель
данных необходимо импортировать либо SQL DDL файл, используемый для создания
DataBlade (Меню File \ Import DataBlade from Script), либо файл ModelBlade
(.mbf) поставляемый производителем DataBlade.
После импорта информации об объектах DataBlade в модель, они становятся
доступны для просмотра в окне Model Explorer.
Прямое и обратное проектирование.
OR*Compass использует графическую модель для генерации скрипта
на стандартном SQL Data Definition Language (DDL) или для генерации БД,
кроме того, поддерживает специфические конструкции для Informix.
В процессе обратного проектирования OR*Compass извлекает информацию из базы данных или файл сценария, включая таблицы, столбцы, представления (view), отношения, триггеры, хранимые процедуры, определяемые пользователем типы данных, и т. д., и автоматически создает модель, основанную на этой информации. На основе этой модели можно создавать документацию системы и перепроектировать структуру базы данных в соответствии с изменяющимися требованиями. Можно установить режим выборочного обратного проектирования, когда извлекаются не все объекты, а только специфические классы объектов базы данных, типа таблиц или процедур, или объекты базы данных, основанные на определенном имени владельца и области хранения.
Сегодня успех любой объектно - реляционной базы данных полностью зависит от того, насколько хорошо она спроектирована. В проекте необходимо не только рассмотреть бизнес- правила, которые определяют ссылочную целостность, но и разработать соответствующие структуры типов данных, чтобы в полной мере реализовать преимущества ОРСУБД. OR*Compass позволяет разработать проект, который помогает понять, анализировать и документировать сложную структуру объектно - реляционной базы данных, и затем автоматически создать базу данных, оптимизированную для прикладных программ. Функциональные возможности проектирования ОРСУБД, реализованные в OR*Compass в дальнейшем будут встроены в новую версию PLATINUM ERwin. Выпуск OR*Compass будет прекращен.