СТАТЬЯ |
06.05.01
|
Пакет Sybase PowerDesigner.
Объектно-реляционное моделирование.
Николай Птицын,
МГТУ им. Н. Э. Баумана, каф. ИУ5
Вступление
Современные CASE-средства являются неотъемлемой частью инструментария разработчика информационной системы [1]. Помимо специализированных CASE-пакетов, решающих задачи на определенной фазе проекта, на рынке появились, так называемые интегрированные комплексы программного обеспечения, позволяющие автоматизировать весь цикл жизни проекта от исследования предметной области до внедрения и поддержки информационной системы. В литературе выделяют следующие средства интегрированных CASE-пакетов:
В этом обзоре мы рассмотрим объектно-реляционную методологию, реализованную в CASE-пакете Sybase PowerDesigner. Более подробно остановимся на модели “сущность-связь”, так как, по мнению автора, компонент проектирования баз данных в PowerBuilder заслуживает особого внимания и может быть использован независимо от всего остального (не менее успешно, чем ERwin- популярный продукт Computer Associates).
Объектно-реляционная парадигма
Реляционная модель данных [3] изначально проектировалась для эффективной обработки запросов и транзакций, манипулирующих записями и полями. Модель получила широчайшее распространение среди производителей программного обеспечения. Был стандартизирован язык запросов к реляционной базе данных (SQL). Реляционная СУБД с поддержкой языка SQL обеспечила практически универсальное решение для хранения и обработки динамических данных. Однако с развитием объектно-ориентированного подхода (ООП) в разработке клиент-серверных приложений проявились трудности, связанные с интеграцией объектной и реляционной моделей.
Наиболее актуальной задачей является сохранение объекта (serialization) из кучи оперативной памяти (heap), доступной приложению, в базу данных с последующим восстановлением (deserialization). Объекты, которые должны “запоминаться”, будем называть постоянными (persistent).
Примерами из финансовой области могут быть объекты Банковский Счет, Держатель Счета. С одной стороны эти объекты создаются и обрабатываются в приложение на рабочем месте оператора, а с другой стороны, они должны надежно храниться в распределенной БД банковской системы.
Одновременно с хранением объектов желательно обеспечить выполнение запросов на выборку на основе заданного условия (значения атрибута), а так же другие манипуляции с объектами – обновление и удаление. То есть речь идет о переходе от уровня работы с записями на уровень работы с объектами.
Одним из решений этой задачи является адаптация реляционной СУБД к объектной
модели. (Альтернативным подходом является полный переход на объектно-ориентированную
СУБД.) Рассмотрим механизм преобразования, который, мог бы обеспечить хранение
объектов в реляционной таблице и, следовательно, работу с атрибутами объекта
как с полями записи
(рис. 1).
рис. 1 Преобразование ООМ в РМ
Сопоставим каждому классу ООМ реляционное отношение (таблицу) следующего вида:
рис. 2 Диаграмма классов Держатель и Счета
Здесь в свойствах связи Держатель Счета (Account Holder) и Адрес Держателя (Holder Address) был определен класс Holder как контейнер для классов Account и Address. В результате в атрибутах Holder появились массивы ссылок accounts и addresses. Скелет класса, который выдает кодогенератор на основе модели UML имеет следующие вид (рис. 3).
рис. 3 Генерируемый код класса Holder на языке Java
С учетом того, что все классы объектов должны “запоминаться” в базе данных, преобразуем эту ООМ в реляционную модель физического уровня. Как видно на рис. 4 ассоциативные (association/composition, в терминологии RUP – aggregation) и наследственные (generalization) связи ООМ заменяются на реляционные отношения между таблицами, устанавливаемые с помощью внешних ключей (<fk>).
рис. 4 Диаграмма “сущность связь” Держатель и Счета
Таким образом, интеграция двух моделей с помощью рассмотренного механизма приводит к возникновению понятия объектно-реляционной модели (ОРМ).
Отметим, что в таком понимании объектно-реляционная СУБД существенно отличается от объектно-ориентированной СУБД. Первая представляет собой традиционную реляционную СУБД дополненной схемой преобразования классов в таблицы (mapping layer). Это позволяет сохранять данные объектно-ориентрованного приложения в “обычной” базе данных.
Более серьезное разногласие объектно-ориентированного и реляционного подходов заключается в концепции хранения данных и программирования. Так, в ООМ используется процедурный язык программирования, ориентированный на работу со скалярными значениями, в то время как SQL представляет собой декларативный язык запросов и предназначен для работы со множествами. Эта явление принято называть потерей соответствия (impedance mismatch).
В индустрии распространенны два подхода к реализации ОРМ:
рис. 5 Уровни проектирования объектно-реляционного ПО
На схеме выделены 4 уровня приложения, на которых ведутся его разработка и тестирование:
За дополнительной информацией обращайтесь в Interface Ltd.
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 06.05.01 |