Если честно - все равно не понял
Ничего страшного, попробую еще раз.
Про пример:
Необходимо смоделировать структуру информационной базы "Справочники". База должна хранить заранее неизвестный и изменяемый состав справочников. Каждый справочник содержит изменяемый состав позиций.
каждая позиция принадлежит справочнику и имеет код
в рамках справочника позиции имеют разные коды
(2 разные позиции одного и того же справочника - их коды не могут совпадать). Справочники и позиции имеют наименования.
Во вложении сообщения
не тот файл
2 диаграммы.
1 диаграмма не отражает уникальность кода позиции внутри справочника (хотя если ее дополнить ограничением класса "позиция"
forAll(a,b|a<>b implies a.Код <> b.Код)
будет отражать и уникальность кода позиции внутри справочника).
2 диаграмма выражает это ограничение графически.
Про проблемму:
прием, использованный на 2 диаграмме, подходит для случаев, когда в состав идентификатора входит ровно 1 полюс с множественностью 1..1 и один или несколько атрибутов.
Как графически выразить ограничение идентификации в общем случае (любое количество атрибутов и полюсов) и/или в других частных случаях (количество полюсов в идентификаторе 0 или больше 1)? Пример на 0: коды позиций не должны совпадать даже если они из разных справочников. Пример на больше 1: к каждой позиции приписан 1 пользователь, создавший ее; состав пользователей заранее не известен; коды позиций не должны совпадать, только если они принадлежат одному справочнику и к ним приписан один пользователь.