понедельник, 23 апреля 2012 г.


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


Объекты и кортежи
Содержимым объекта является структура с компонентами для атрибутов и связей класса. Стандарт ODL не содержит предписаний относительно того, как должна пред­ставляться информация о связях, но можно предположить, что объект соединяется с другими объектами посредством определенного набора указателей. Кортеж также описывается структурой, но в традиционной реляционной модели предусматривается, что кортеж обладает только компонентами атрибутов. Связи представляются кортежа­ми других отношений (см. раздел 3.3.2 на с. 102). Объектно-реляционная модель, од­нако, позволяет рассматривать множества ссылок в виде компонентов кортежей, и по­этому допускает включение информации связей непосредственно в кортежи, пред­ставляющие "объекты" или "сущности".
Экземпляры классов и отношения
В языке ODL все объекты класса трактуются в контексте экземпляра (extent) клас­са. Объектно-реляционная модель допускает возможность существования нескольких различных отношений с одной и той же схемой, так что должны быть предусмотрены и более развитые средства различения членов одного и того же класса. ODL, однако, позволяет определять интерфейсы (interfaces) — по существу, те же классы, но без объявления экземпляра (см. врезку "Интерфейсы" на с. 169). Помимо того, в ODL предусмотрена возможность определения произвольного числа классов с различными экземплярами, наследующих один и тот же интерфейс.
Методы
Мы не говорим о возможности использования методов как о неотъемлемой части объ­ектно-реляционной модели. На практике, однако, это вполне допустимо, поскольку в стандарте SQL-99 и реализациях объектно-реляционной модели предусмотрены средства объявления и определения методов в составе классов, аналогичные инструментам ODL.
Системы типов
Системы типов в объектно-ориентированной и объектно-реляционной моделях весьма схожи. Каждая из них основана на множестве атомарных типов и предусмат­ривает средства создания новых типов из существующих с помощью конструкторов структурных типов и типов коллекций. Набор доступных типов коллекций в каждом конкретном случае может отличаться, но во всех реализациях предлагаются, как ми­нимум, конструкторы типов множеств (sets) и мультимножеств (bags). В обоих моде­лях типам множеств (или мультимножеств) структур отводится особая роль: речь идет о типах классов в ODL и типах отношений в объектно-реляционной модели.