А.М. Бабанов, Н.И. Синченко
К ВОПРОСУ О ТРАНСФОРМАЦИИ «К-А»-ИЕРАРХИЙ ИЗ EER-МОДЕЛИ в реляционную модель
Приводится обзор методов представления специализации и категоризации в реляционной схеме; предлагается подход к определению наиболее подходящего метода в зависимости от свойств трансформируемой EER-схемы.
В соответствии с широко распространенной методикой проектирования [1, 2], построению логической схемы базы данных предшествует этап семантического моделирования. Семантические модели разрабатывались как средства, располагающие достаточными возможностями для представления семантики и отображения в полной мере всех аспектов моделируемой предметной области, поэтому не вызывает удивления тот факт, что концепция классификации нашла свое применение в семантическом моделировании. Так, наиболее известная на сегодняшний день семантическая модель - модель «Сущность - Связь» (ER-модель) - была расширена понятиями специализации/генерализации и категоризации, получив соответственно название расширенной (Enhanced) ER-модели (EER-модели).
Хотя EER-модель располагает достаточно выразительными средствами отражения фактов реального мира, она, как и другие семантические модели, не нашла воплощения в коммерческих СУБД, в основе большинства из которых по-прежнему лежит реляционная модель, вследствие чего возникает необходимость определения правил трансформации EER-модели предметной области в реляционную схему. Настоящая статья посвящена разработке подобных правил в отношении специализации/генерализации и категоризации.
Концепции специализации/генерализации и категоризации в рамках EER-модели
В [1] понятия специализации/генерализации и категоризации определяются следующим образом: «Специализация представляет собой нисходящий подход к определению множества суперклассов и связанных с ними подклассов. Множество подклассов определяется на основе некоторых отличительных характеристик подмножеств элементов суперкласса - специфических свойств и отношений», в то время как «генерализация представляет собой восходящий подход (противоположный специализации), который позволяет создать обобщенный суперкласс на основе различных исходных подклассов». «Категоризация -моделирование одного подкласса со связью, которая охватывает несколько различных суперклассов», при этом подкласс (его еще называют категорией) обладает выборочным наследованием, т.е. «каждый экземпляр категории наследует атрибуты (и связи) только одного из суперклассов». Отметим, что приведенные выше термины часто используются для обозначения как самого процесса построения иерархий, так и его результата [3].
На процедуры специализации и категоризации могут накладываться ограничения целостности: ограничение непересечения (оно касается только специализаций) и ограничение участия. Если специализация непересекающаяся, то каждый экземпляр суперкласса
может быть членом только одного из подклассов. В случае пересекающейся специализации экземпляр суперкласса может быть членом сразу нескольких подклассов. Специализация с полным участием предполагает, что каждый экземпляр суперкласса является членом хотя бы одного из подклассов. Специализация с частичным участием допускает, что экземпляр суперкласса может не являться членом ни одного из подклассов. Категоризация с полным участием означает, что все экземпляры всех суперклассов должны присутствовать в подклассе. Категория с частичным участием не требует присутствия всех экземпляров всех суперклассов в подклассе.
Таким образом, имеется возможность включения в модель предметной области достаточно сложных «1Б-а»-иерархий, которые, помимо естественности представления информации для человека, имеют и другие положительные свойства. Так, обобщение предполагает перенос определений некоторых атрибутов и множеств связей на уровень суперкласса, благо -даря этому фиксируется важная информация о том, что данные атрибуты и типы связей имеют смысл не только для экземпляров конкретного подкласса, но и для суперкласса в целом, а значит, и для всех остальных его подклассов. Также обобщение позволяет исключить дублирующие определения атрибутов и множеств связей для «родственных» множеств сущностей, в результате чего удается избежать некоторых ошибок и сократить время, затрачиваемое на проектирование. И наконец, процесс семантического моделирования зачастую ведется в терминах различных абстракций одного и того же объекта (например, конкретный человек может рассматриваться как экземпляр класса Сотрудник, будучи продавцом в магазине, и как экземпляр класса Клиент, осуществляя покупку), а иерархия обобщения позволяет в таких случаях восстановить целостность и единственность объекта реального мира.
С другой стороны, выделение подкласса в процессе специализации является своего рода гарантией применимости связей и значений атрибутов к тем сущностям, для которых они заданы (например, скорость набора текста актуальна для секретарей и машинисток, но в отсутствие разделения на подклассы может быть ошибочно задана для других экземпляров класса Сотрудник). Помимо этого специализация призвана упростить процесс моделирования, позволяя постепенно увеличивать сложность схемы, в то время как обобщение предоставляет проектировщику возможность работать с большими моделями, выбирая различные уровни абстракции.
Обзор методов представления специализаций и категоризаций в реляционной схеме
Можно выделить несколько методов представления специализаций и категоризаций. Будем классифицировать методы по количеству реляционных отношений, необходимых для представления множеств связей «суперкласс - подкласс» и множеств сущностей, задействованных в процессе и получаемых в результате специализации или категоризации.
Для специализации имеется 5 вариантов представления.
Метод 1: 1 отношение. Создается одно отношение, которое включает атрибуты суперкласса и всех подклассов, т.е. каждая сущность в рамках специализации описывается кортежем только одного отношения.
Варианты реализации:
1.1. Каждому атрибуту подкласса - отдельный атрибут отношения.
1.2. Совместное использование атрибутов.
Вариант 1.2 предполагает, что в результирующем
отношении некоторый атрибут отношения используется для хранения значений нескольких атрибутов различных подклассов (разумеется, при условии совпадения доменов).
Метод 2: п+1 отношение. Для суперкласса и каждого из подклассов создается по одному отдельному отношению. Одна сущность может описываться кортежами нескольких отношений: от 1 до п+1.
Варианты реализации:
2.1. Все атрибуты суперкласса дублируются в подклассах.
2.2. Дублируются только ключи: ключ суперкласса становится внешним ключом подкласса, а также первичным или альтернативным (при наличии у подкласса собственного ключа).
2.3. Дублируются только ключи: ключи подклассов копируются в отношение, представляющее суперкласс.
2.3.1. Для хранения ключей подклассов в отношении-суперклассе используются к1+к2+^+кп атрибутов, где к/ - количество атрибутов в ключе /-го подкласса.
2.3.2. Для представления ключей подклассов в отношении-суперклассе используются к атрибутов (предполагается, что ключи всех подклассов одинаковы по структуре и состоят из к атрибутов каждый) и дискриминатор.
Метод 3: п отношений. Создается п отношений: по одному для каждого подкласса, атрибуты суперкласса включаются в каждое из этих отношений. Таким образом, одна сущность может быть представлена кортежами нескольких отношений: от 1 до п. В случае использования суррогатных ключей значения первичного ключа суперкласса для всех п отношений генерируются при помощи одной последовательности.
Метод 4: от п до 2п отношений («объектноориентированный» метод). Основной принцип данного метода может быть сформулирован следующим образом: для любого возможного поддерева в иерар-
хии специализации, включающего корневой суперкласс, создается одно отношение, которое содержит в качестве атрибутов все немногозначные атрибуты множеств сущностей, принадлежащих поддереву. Таким образом, каждая сущность в рамках рассматриваемой специализации описывается кортежем одного и только одного отношения, причем указанное отношение содержит только те атрибуты, которые имеют смысл для этой сущности.
Количество получаемых в итоге отношений зависит от ограничений целостности, накладываемых на специализацию, например: неполное участие приводит к созданию дополнительного отношения (для сущностей, не принадлежащих ни одному из подклассов), что касается свойства непересечения - здесь ситуация несколько сложнее. Вообще говоря, при реализации этого метода удобнее оперировать отношениями «суперкласс-подкласс» по отдельности, поскольку необходимо рассматривать возможность пересечения для каждого подмножества множества подклассов.
Заметим, что метод 3, представляющий поддерево классов одной специализации в виде п отношений, является частным случаем реализации рассматриваемого метода при условии непересекающейся и полной специализации.
Метод 5: п+2 отношения. Помимо п отношений (для каждого из подклассов - отдельное отношение) и одного для суперкласса создается связующее отношение, которое имеет следующие атрибуты:
а) имя отношения суперкласса;
б) набор атрибутов, представляющих значение первичного ключа объекта в отношении суперкласса;
в) имя отношения подкласса;
г) набор атрибутов, представляющих значение первичного ключа объекта в отношении подкласса.
Таким образом, один объект может описываться кортежами нескольких отношений: от 1 до п+1.
Атрибут «имя отношения суперкласса» может отсутствовать, если суперкласс всего один.
Это универсальный метод хранения связи «суперкласс-подкласс» независимо от того, каким образом эта связь изначально была задана: при помощи специализации или категоризации; также метод подходит для представления множественного наследования. При желании в описанном отношении можно хранить связи «суперкласс-подкласс» всей схемы (при этом значения всех ключей должны принадлежать одинаковым доменам, это условие обычно справедливо для суррогатных ключей).
Далее рассмотрим методы представления в реляционной схеме для категоризации (п - количество суперклассов).
Метод 1: п отношений. Данный метод предполагает, что все немногозначные атрибуты категории становятся атрибутами в отношениях, представляющих суперклассы.
Метод 2: п+1 отношение. Для подкласса (категории) и каждого из суперклассов создается отдельное отношение.
Варианты реализации:
2.1. Ключ категории становится внешним ключом в отношениях-суперклассах.
2.2. Ключи суперклассов становятся внешними ключами отношения-категории:
2.2.1. Для каждого из ключей - отдельная группа атрибутов, принимающая уникальные значения в пределах категории (этот вариант может быть единственно возможным, поскольку несуррогатные ключи для множеств сущностей разной природы могут отличаться по количеству атрибутов и используемым доменам).
2.2.2. Один ключ и дискриминатор (группа «внешний ключ-дискриминатор» становится ключом, альтернативным или первичным, отношения-категории).
2.3. Все атрибуты суперкласса дублируются в отношении-категории. Заметим, во-первых, что создавать дубликаты всех атрибутов не имеет смысла - достаточно тех, которые необходимы для работы с категорией; во-вторых, непересекающиеся суперклассы делают возможным совместное использование атрибутов категории несколькими суперклассами; в-третьих, ключи суперклассов следует объявить альтернативными (в случае совместного использования атрибутов уникальной объявляется пара ключ суперкласса + дискриминатор) для отношения-подкласса.
Метод 3: n+2 отношения. Аналогичен методу 5 для специализации. Если для каждой категоризации создается отдельное связующее отношение, то атрибут, хранящий имена подклассов (т. е. имя категории), не нужен.
Принимая во внимание многообразие методов трансформации, можно говорить о существовании проблемы выбора одного из них. Материал, посвященный данному вопросу, можно найти в нескольких источниках [1, 2, 4]. В [2] концепции специализации/генерализации и категоризации не используются: автор оперирует понятиями суперклассов, подклассов и бинарных связей между ними, а в качестве решения предлагает вариант 2.2 (ссылка здесь и далее на список методов для специализаций).
В [4] изложение материала также ведется в терминах множеств бинарных связей «суперкласс-подкласс», но предлагаемых вариантов трансформации в структуры реляционной модели больше: используются методы 1.1, 2.2 и 4. Более того, в [4] производится сравнение методов по эффективности реализации запросов (восстановление полной информации об одном объекте и поиск) и по эффективности использования памяти (дублирование значений атрибутов, пропущенные значения), но каких-либо рекомендаций по поводу выбора одного из них, тем не менее, не дается.
В [1] делается попытка сформулировать правила трансформации в терминах отношений «суперкласс-подкласс», но ссылка на свойства полноты и непере-сечения указывает на то, что речь идет о специализации; здесь предлагаются на выбор варианты 1.1, 2.2 и 3, вариант 3 указывается в качестве наиболее целесообразного решения для полных непересекающихся специализаций, а также предлагается обратить внимание на связи, в которых участвуют экземпляры подкласса.
Следует отметить CASE-средство Oracle Designer 2000, в котором для трансформации специализаций
предоставляется 4 опции: 1.1, 3, 2.1 и 2.3.1, но выбор метода полностью лежит на плечах проектировщика.
Можно сделать следующие выводы: ни один источник не содержит полного списка методов трансформации, практически отсутствуют комментарии относительно предпочтительности метода в той или иной ситуации, к тому же не уделяется достаточного внимания вопросу преобразования категоризаций. Данное исследование представляет собой первый шаг на пути разработки системного подхода к решению проблемы выбора наилучшего с некоторой точки зрения метода представления специализаций и категоризаций в реляционной модели.
Подход к выбору метода представления специализаций и категоризаций в реляционной схеме
Предлагается при выборе метода представления специализаций и категоризаций руководствоваться совокупностью следующих критериев, определив для себя наиболее приоритетный из них:
1. Простота реализации. Помимо собственно времени, затрачиваемого на реализацию, критерий может включать и специфические требования, такие как учет потенциальной необходимости вносить изменения в реляционную схему (в частности, возможность появления дополнительных подклассов, например: в организации может быть введена новая должность).
2. Эффективность хранения. Имеется возможность (за счет выбора метода) снизить влияние некоторых факторов, отрицательно сказывающихся на эффективности хранения:
а) дублирование значений атрибутов:
- дублирование значений ключей;
- дублирование значений остальных атрибутов;
б) представление отсутствующих значений (NULL);
в) метаданные.
3. Эффективность обработки:
а) обновление;
б) проверка ограничений целостности (совокупность ограничений целостности, заданных как явно, так и неявно, неизменна, однако, сложность проверки одного и того же ограничения будет различной в зависимости от выбранного метода);
в) выборка (здесь рассматриваются запросы, которые предположительно будут выполняться наиболее часто).
Заметим, что на оценку метода по конкретному критерию могут оказать существенное влияние особенности целевой СУБД.
Далее имеет смысл рассмотреть свойства EER-схемы (факторы): они часто определяют как возможность реализации метода, так и в некоторой степени его эффективность в соответствии с перечисленными выше критериями.
Для специализаций необходимо учесть следующие факторы:
1. Количество атрибутов и множеств связей, ассоциированных с суперклассом и подклассами.
2. Свойства полноты участия и непересечения специализации.
3. Степень пересечения подклассов в случае пересекающейся специализации.
4. Степень неполноты в случае специализации с неполным участием.
5. Количество подклассов специализации.
6. Наличие множества связей или атрибута, для представления которого процедура преобразования в реляционную схему создает для некоторого отношения внешний ключ, ссылающийся на ключ суперкласса, но не входящий в состав первичного ключа этого отношения.
7. Выполнение условия, аналогичного условию пункта 6, для одного или нескольких подклассов.
8. Наличие множества связей или атрибута, порождающего в процессе трансформации в реляционную схему отношение, внешний ключ которого ссылается на ключ суперкласса, а также входит в состав первичного ключа данного отношения.
9. Выполнение условия, аналогичного указанному в пункте 8, для одного или нескольких подклассов.
10. Использование несуррогатных (естественных) ключей для суперкласса или подклассов.
Выбирая метод представления для категоризации в реляционной схеме, следует рассмотреть следующие свойства ЕЕЯ-схемы:
1. Количество атрибутов и множеств связей, ассоциированных с категорией и суперклассами.
2. Свойство полноты участия для категоризации.
3. Степень неполноты в случае категоризации с неполным участием.
4. Наличие множества связей или атрибута, порождающего в процессе трансформации в реляционную схему отношение, внешний ключ которого ссылается на ключ категории, но не входит в состав первичного ключа данного отношения.
5. Наличие множества связей или атрибута, порождающего в процессе трансформации в реляционную схему отношение, внешний ключ которого ссылается на ключ категории, а также входит в состав первичного ключа данного отношения.
6. Количество суперклассов.
7. Использование естественных ключей для суперклассов и подкласса.
По всей видимости, для практических целей прежде всего представляет интерес набор правил, позволяющих на основе свойств EER-модели предметной области и заданных требований к получаемой реляционной схеме определить, какой метод следует выбрать в конкретной ситуации. Этому и будут посвящены дальнейшие исследования и публикации авторов.
ЛИТЕРАТУРА
1. Коннолли Т., БеггК.., Страчан А. Базы данных: проектирование, реализация и сопровождение. Теория и практика: Пер. с англ. М.: Вильямс,
2000. 1120 с.
2. Дейт К. Введение в системы баз данных. 7-е изд.: Пер. с англ. М.: Вильямс, 2001. 1072 с.
3. ElmasriR., NavatheS.B. Fundamentals of database systems. 4th edition. MA.: Addison Wesley, 2003. 1009 p.
3. Гарсиа-Молина Г., Ульман Д., Уидом Д. Системы баз данных. Полный курс: Пер. с англ. М.: Вильямс, 2003. 867 с.
Статья представлена кафедрой теоретических основ информатики факультета информатики Томского государственного университета, поступила в научную редакцию «Информатика» 29 мая 2006 г.