Ассоциативные сущности
Ассоциативные сущности представляются в RM/T точно так же, как и стержневые. Следовательно, для каждого ассоциативного типа сущностей имеется E-отношение и ноль или большее число P-отношений. На рис. 4 показан пример ассоциации назначения между служащими и проектами, где каждое назначение интерпретируется как некоторая сущность, и для регистрации суррогатов служащих и проектов, а также дат назначения используются P-отношения.
Рис. 4. Ассоциативная сущность
Если у заданного ассоциативного типа сущностей имеется подчиненный ему характеристический тип сущностей, то в CG-отношении будут иметься соответствующие кортежи, которые определяют дерево этих типов. Кроме того, для поддержки каждого из этих характеристических типов сущностей будут иметься характеристические отношения.
Вставка, обновление и удаление ассоциативных сущностей регулируются следующим правилом.
Правило 6 (целостность ассоциаций): Ассоциативная сущность может существовать в базе данных (т.е. имеется соответствующий суррогат в соответствующем E-отношении), даже если одна или более участвующих в этой ассоциации сущностей являются неизвестными (если только не задано явное ограничение целостности, запрещающее таких ассоциативных сущностей). В таком случае для указания того факта, что участвующие сущности неизвестны, используется суррогат E-null.
Для принудительного автоматического удаления ассоциации при удалении сущности, участвующей в этой ассоциации, можно легко добавить явное ограничение, устанавливающее, что соответствующий атрибут в подходящем P-отношении не может принимать неопределенного значения. Такое ограничение должно являться частью приложения RM/T, а не составной частью самой RM/T.
Ассоциативный тип сущностей служит для поддержки взаимосвязей сущностей других типов (стержневых, ассоциативных либо тех и других). Назовем эти другие типы непосредственными участниками (immediate participant) заданного ассоциативного типа сущностей. Для поддержки спецификаций, указывающих, какие типы сущностей являются участниками и каких именно ассоциативных типов сущностей, мы вводим ассоциативное графовое отношение
( association graph relation, для краткости, AG-отношение). Это точно такое же бинарное отношение, как и CG-отношение, за исключением его интерпретации: (SUB:m, SUP:n) принадлежит AG-отношению, если тип сущностей e(m) непосредственно принимает участие в определении ассоциативного типа сущностей e(n). Заметим, что транзитивное замыкание AG-отношения является частично упорядоченным, но не обязательно представляет собой дерево или совокупность деревьев.
Важно отметить, что, если участником одного типа ассоциаций является другой тип ассоциаций, то использование надлежащим образом суррогатов в ассоциации верхнего уровня для ссылок на конкретных участников более низких уровней может устранить потенциальный источник двусмысленности (таким же образом, как надлежащее использование контролируемых пользователем ключей может устранить такую двусмысленность в базисной реляционной модели). Чтобы проиллюстрировать такую двусмысленность, предположим, что имеется два отношения IS и CAN, причем каждое из них имеет атрибуты S (суррогаты поставщика), P
(суррогаты деталей) и C (суррогаты городов):
IS ( S:e P:e C:e )
CAN ( S:e P:e C:e )
где (s:e, p:e, c:e) принадлежит IS, если поставщик s поставляет деталь p из города c; и (s:e, p:e, c:e) принадлежит CAN, если поставщик s может поставлять деталь p из города c.
Предположим также, что имеется необходимость представлять ассоциацию более высокого уровня, которая связывает каждую пару (s, p) из IS c проектом (проектами), получающими детали с серийным номером p. Мы могли бы построить RM/T отношение TO(S:e P:e J:e), где атрибут J
определяется на суррогатах проектов. Из этого определения неясно, однако, являются ли пары (s, p) в TO парами из IS, или парами из CAN, или просто произвольными парами суррогатов поставщика и детали. Особое ограничение целостности, имеющее форму:
TO[S:e, P:e] ⊆ IS[S:e, P:e]
помогает разрешить эту двусмысленность на уровне типов, но не на уровне экземпляров.
Это связано с тем, что в отношении IS может иметься два или более экземпляров пары (s, p), например, (s, p, c1) и (s, p, c2), и в таком случае неясно, ссылается ли экземпляр (s, p) в отношении TO на (s, p, c1) или на (s, p, c2).
Благодаря использованию ассоциативных сущностей в RM/T такая двусмысленность может быть разрешена как на уровне типов, так и на уровне экземпляров. Мы имели бы следующие отношения RM/T:
IS ( IS:e S:e P:e C:e ... )
CAN ( CAN:e S:e P:e C:e ... )
TO ( TO:e IS:e ... )
где атрибут IS:e в отношении TO ссылается на определенные сущности и, следовательно, определенные кортежи в отношении IS.
Можно считать, что совокупность типов сущностей, принимающих участие (непосредственным или иным образом) в заданном ассоциативном типе сущностей образует ассоциативный молекулярный тип (associative molecule type), который связывается воедино с помощью кортежей в AG-отношения.