Базы данных

Представление более сложных специализаций и генерализаций в виде таблиц


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

Адаптация к множественным генерализациям (множественному наследованию) достаточно проста. Для стратегии 1, описанной на 4.11, например, в таблицу подкласса добавляется внешний ключ каждого из его суперклассов, и в качестве ключа таблицы подкласса используется комбинация этих внешних ключей.

Стратегия 2не подходит для представления множественного наследования. Она потребует слияния многих таблиц суперклассов, что будет противоречить разделению этих классов сущностей в концептуальной модели.

Для использования стратегии 3, описанной на 4.11 (включение атрибутов суперкласса в таблицы подклассов), следует добавить все атрибуты всех суперклассов к каждому из подклассов. Как и в стратегии 1, ключ таблицы подкласса образуется комбинацией ключей суперклассов.

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

Аналогично, в случае перекрывающихся специализаций не возникает никаких проблем в применении стратегий 1 или 2. Стратегия 3 не подходит для представления перекрывающейся специализации.

Очевидно, что множественные специализации, как в случае специализаций по типу оплаты и по исполняемым обязанностям, изображенных на 3.2, очень похожи на перекрывающиеся специализации. Объекты относятся к нескольким подклассам суперкласса. Следовательно, стратегии 1 и 2 подходят, а стратегия 3 — нет.

В завершение следует отметить, что стратегия 1 — создание таблицы для каждого суперкласса и подкласса — подходит для всех случаев и часто является наилучшим выбором. Стратегия 2 — единственная таблица, включающая все атрибуты суперклассов и подклассов — часто приводит к появлению многих значений null и не всегда ясно указывает на членство сущности в подклассе. И наконец, стратегия 3 не является универсально применимой, но часто допустима в контексте объектно-ориентированных приложений.

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

Комментарии закрыты