пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Мсис
» Бд

Отображение классов на таблицы. Способы реализации наследования в ОРСУБД.

Отображение классов на таблицы.

Основная идея объектно-ориентированного отображения достаточно проста:

•  классы отображаются на таблицы,

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

Основная схема объектно-ориентированного отображения приведена на рис.39.

Наследование

Реляционная модель не предполагает наследования. Таким образом, отображе­ние иерархии наследования объектной модели на реляционную схему является доста­точно непростым заданием. Существует несколько способов отображения наследова­ния на уровне объектной модели на реляционную модель, рассмотренных ниже, каждый из которых облада­ет определенными преимуществами и недостатками.

Горизонтальное разделение

Горизонтальное разделе­ние поддерживает множественное наследование. Именам столбцов могут предшество­вать имена классов, для которых первоначально были определены атрибуты. Горизон­тальное разделение обеспечивает отображение, поддерживающее простую идею отобрази-каждый-класс-на-таблицу, а также обеспечивает приемлемую производительность операций манипулирования строго типизированными данными. Пример, приведенный на рис.41., иллюстрирует, как выглядит горизонтальное разделение для базового класса Акция с двумя потомками Вариант и Предпочтительная акция. Запрос на получение све­дений обо всех объектах предпочтительных акций требует одного простого запроса, ко­торый   вернет   целую   коллекцию   данных,   в   частности   SQL-вызов

SELECT * FROM Предпочтительная акция

Однако горизонтальное разделение обладает и це­лым рядом недостатков. При внесении изменений в один из абстрактных базовых или конкретных классов, находящихся в основании графа наследования, например, добавле­ния нового атрибута, претерпят изменения все конкретные классы или таблицы, насле­дующие от этого класса, С этой точки зрения каждый запрос требует осуществления за­просов к нескольким таблицам, результаты которых агрегируются. Например, для того чтобы извлечь все объекты Акция, нам необходимо провести три отдельных SQL-запроса SELECT; первый для извлечения всех экземпляров Акция, второй для извлечения всех экземпляров Вариант и третий — для извлечения всех экземпляров Предпочтительная акция. Все полученные результаты затем объединяются для получения унифицирован­ной коллекции, содержащей сведения обо всех акциях. Конечно, повысить эффективность подобных запросов можно, используя оптимизацию, основанную на специфике  реляционных способов отображения, которые бы расширяли возможности схемы горизонтального раз­деления,.

Вертикальное разделение

Каждый производный класс отображается на новую таблицу, содержащую атрибуты, которые определены только для этого класса. Помимо этого, каждая таблица содержит внешний ключ, указывающий на таблицу базового класса. Множе­ственное наследование поддерживается путем включения нескольких внешних клю­чей в таблицу производного класса. Расширения и изменения очень легко добавить по мере необходимости в одну и ту же таблицу. Однако любой запрос на извлечение экземпляров производного класса или таблицы требует как минимум одного соедине­ния, а в случаях глубокой иерархии наследования — даже нескольких соединений. Все это сказывается на производительности всех операций, манипулирующих данными (вставка, запрос, обновление и удаление).

Унификация

Все абстрактные и конкретные классы в рамках одной ветви иерархии отобража­ются на одну таблицу. Для идентификации типа каждой строки используется дополни­тельный столбец, называемый дискриминатором типа. Во многих случаях в этих целях может использоваться имя реального класса. Такой способ отображения не совсем соот­ветствует правилам нормализации. Следовательно, таблицы могут быть очень слабо заполненными, особенно « том случае, если один дочерний класс характеризуется большим количеством атрибутов. Такой вариант отображения оказывается наиболее выгодным при использовании абстрактных роди­тельских классов; это означает, что не существует реальных экземпляров абстрактных классов, несмотря на то, что все определенные для них атрибуты содержатся во всех на следующих классах.


хиты: 139
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь