ГОСТ Р ИСО 10303-11 — 2009
Н.1.3 Дистрибутивная взаимосвязь
Помимо групповой взаимосвязи, рассмотренной выше, атрибут, имеющий агрегированное значение, уста
навливает дистрибутивную взаимосвязь между объектным типом данных и основным базисным типом агрегиро
ванного типа данных, используемым для представления атрибута.
Дистрибутивная взаимосвязь индивидуально связывает экземпляр объявляющего объекта с любым чис
лом экземпляров представляющего основного базисного типа. Мощность данной взаимосвязи ограничена мощ
ностью агрегированного типа (типов) данных, используемого для представления атрибута. Обозначив основной
базисный тип типа данных атрибута как FUND(T), дистрибутивная взаимосвязь может быть представлена следую
щим образом:
Е. А{*:1} (Р : <?} ) FUND(T),
где 0 £ ft £ 1 и 0 £ р £ q.
Это означает, что для каждого экземпляра Е атрибут А состоит из экземпляров FUND (Т) числом от к до 1.
Экземпляр FUND (Т) может появиться в роли А в от р до q экземплярах Е.
Следующие варианты значений р и q представляют содержательные классы ограничений на дистрибутив
ную взаимосвязь между £ и FUND (Т):
- если q = 1. то существует ограничение, что экземпляр FUND (Т) не может появиться в роли А более чем в
одном экземпляре Е:
- если 1 £р. то существует ограничение существования для FUND (Т). То есть для каждого экземпляра
FUND (Т) должно существовать не менее р (но не более q) экземпляров Е. содержащих экземпляр FUND (Т) в
роли А.
Для ограничения мощности дистрибутивной взаимосвязи и ее инверсной взаимосвязи используются следу
ющие конструкции на языке EXPRESS:
- значения к и 1 определяются спецификациями границ агрегированных типов данных, используемых для
представления А. В простейшем случав типомданных атрибута будет простоSET [k: I] OF FUND (Т) (или аналогич
ный тип данных BAG или LIST).
П р и м е ч а н и е — При данном подходе к взаимосвязям не существует различия между одномерными и
многомерными агрегированными значениями;
- длядистрибутивной взаимосвязи вариант q = 1 не может бытьохвачен присоединением правила уникально
сти к Е. А. Вместо этого инверсный атрибут должен бытьобьявпен и ограничен в FUND (Т) как INVERSE I : Е FOR А;
- другие ограничения на мощность инверсной взаимосвязи выражаются путем обьявления инверсного
атрибута в FUND (Т). как INVERSE I : SET (р : q] OF Е FOR А. Случай, когда р = q = 1, может быть сокращенно
представлен как INVERSE I : Е FOR А.
Ниже приведены примеры дистрибутивных взаимосвязей и связанных с ними ограничений мощности.
Примеры
1 Сравните данныйпример с примером 1из Н. 1.2.
POLY_CURVE.COEF{1:?}{0 : 7} ) REAL
Объект POLY_CURVE имеет, по меньшей мере, одно действительное число, играющее роль объек
та COEF. Конкретное действительное число может быть использовано в атрибуте COEF в неограни
ченном числе объектов POLY_CURVE (в том числе ни одного). Это может быть объявлено следующим
образом:
ENTITY poly_curve;
coef : LIST [1 :?] OF REAL;
END_ENTITY;
2 Сравните данный пример с примером 2 из Н. 1.2.
LOOP.EDGES<0 :? >(2:2} } EDGE
Объект LOOP может состоять из любого числа объектов EDGE (в том числе ни одного). Объект
EDGE должен использоваться точнов двухразных объектах LOOP. Этоможет быть объявлено следую
щим образом:
ENTITY loop;
edges : OPTIONAL LIST [1: ?] OF edge;
UNIQUE
un1: edges;
END_ENTITY;
181