Классика баз данных - статьи


         

Паттерн ClassSelect


В тех случаях, когда в определении атрибута селективного типа участвуют агрегатные конструкции, применение рассмотренного выше паттерна является проблематичным и возникает необходимость представления значений атрибута класса отдельной таблицей <Class>_<Attribute>_Select. Организация данной таблицы повторяет структуру столбцов в предыдущем паттерне отображения за исключением того, что резервируются дополнительные столбцы для хранения индексов элементов агрегатов, участвующих в определении селективного типа. Число столбцов, необходимое для этого, определяется максимальной глубиной вложенности используемых конструкций упорядоченных агрегатов. Для связи с объектами используется ссылка из таблицы <Class>_<Attribute>_Select на соответствующую таблицу объектов классов в виде внешнего ключа записей в ней (см. рис. 16).

Рис. 16. Представление селективных конструкций в паттерне ClassSelect

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



Содержание  Назад  Вперед