ГОСТ Р ИСО 10303-11— 2009
3 PERSON.LUNCH{0:1} {0:?} MEAL
Каждаяличность PERSON может иметь еду MEAL вроли завтрака LUNCH. Еда MEAL может играть
роль LUNCH для любого числа личностей (предполагая, что еды достаточно много). Это может быть
объявлено следующим образом:
ENTITY person;
lunch;OPTIONAL meal;
END_ENTITY;
ENTITY meal;
calories : energy_measure;
amount:weight_measure;
END_ENTITY;
H.1.2 Групповая взаимосвязь
Атрибут объектного типа данных, имеющий агрегированное значение, устанавливает групповую взаимо
связь между объектным типом данных и агрегированным типом данных, используемым для представления
атрибута.
П р и м е ч а н и е — Групповая взаимосвязь не распространяется на экземпляры объектов, из которых
агрегированные значения атрибута витоге формируются. Вместо этого данные экземпляры участвуют вдистрибу
тивной взаимосвязи (см. Н.1.3).
Групповая взаимосвязь подобна простой взаимосвязи в случае неагрегированных типов данных. Группо
вая взаимосвязь всегда существует между экземпляром объявляющего объекта и не бопве чем одним экземпля
ром представляющего агрегированного типа данных. Как и в случав простой взаимосвязи, это может быть пред
ставлено следующим образом:
Е. А {т : 1 > {’ *> ]Т.
где 0 S m S 1 и 0 i r i s .
Следующие варианты значений г и s представляют содержательные классы ограничений на групповую
взаимосвязь между Е и Т:
- если s = 1, то существует ограничение уникальностидля группового значения атрибута А;
- если 1Sr. то существует ограничение существования для Т.
Как и в простой взаимосвязи значение т определяется объявлением атрибута А как OPTIONAL (m = 0).
Ограничение уникальности, когда s = 1, может быть обеспечено как и в случае простой взаимосвязи записью
правила уникальностидля А в объявлении Е. В противном случае г иs не могут быть ограничены.
Ниже приведены примеры групповых взаимосвязей и связанных с ними ограничений мощности.
Примеры
1 POLY_CURVE.COEF{1:1}{0 : ?>LIST [1 :?] OF REAL
Каждыйобъект POLY_CURVE имеет списокдействительных чисел, играющийроль объекта COEF.
Любой список LIST [1 : ?] OF REAL может играть роль объекта COEF в любом количестве объектов
POLY_CURVE (включаяни одного). Это может быть обмелено следующим образом:
ENTITY poly_curve;
coef : LIST [1 :?] OF REAL;
END_ENTITY;
2 LOOP.EDGES{0 :1){ 0 : 1 > t LIST [1 : ?] OF EDGES
Каждый объект LOOP может иметь списокобъектов EDGE, играющий роль объекта EDGES. Каж
дыйсписокLIST [1: ?} OF EDGE может игратьроль объекта EDGES самое большее для одного экземпляра
LOOP. Это может быть объявлено следующим образом:
ENTITY loop;
edges :OPTIONAL LIST [1 : ?] OF edge;
UNIQUE
un1 : edges;
END_ENTITY;
ENTITY edge:
END_ENTITY;
180