Статус документа
Статус документа

ГОСТ Р ИСО 10303-11-2009 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS

     9.2.2 Локальные правила


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

Каждому из локальных правил может быть присвоена метка правила.

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

9.2.2.1 Правило уникальности

В правиле уникальности может быть определено ограничение уникальности для отдельных атрибутов или комбинаций атрибутов. Правила уникальности записывают после ключевого слова UNIQUE, указывая имя одиночного атрибута или список имен атрибутов. Правило, в котором указано имя одиночного атрибута, называется правилом простой уникальности и устанавливает, что никакие два экземпляра объектного типа данных из области определения не должны использовать один и тот же экземпляр именованного атрибута. Правило, в котором указаны два или более имен атрибутов, называется правилом совместной уникальности и устанавливает, что никакие два экземпляра объектного типа данных не должны иметь одинаковую комбинацию экземпляров именованных атрибутов.

Примечание - При сравнении оценивается равенство экземпляров, а не равенство значений (см. 12.2.2).


Правило: если явный атрибут, который отмечен как OPTIONAL (см. 9.2.1.1), появляется в правиле уникальности, и если при этом атрибут не имеет значения для конкретного экземпляра объекта, то правило уникальности не является ни нарушенным, ни доказанным, и поэтому данный экземпляр объекта принадлежит области определения.

   Синтаксис:

     333 unique_clause = UNIQUE unique_rule ' ; ' { unique rule ' ; ' } .
     334 unique_rule = [ rule_label_id ' : ' ] referenced_attribute { ' , '
                 referenced_attribute} .
     280 referenced_attribute = attribute_ref | qualified_attribute .


Примеры
     


    1 Если объект нe имеет три атрибута a, b и с, то следующий фрагмент на языке EXPRESS означает, что два экземпляра объявленного объектного типа данных не могут иметь одинаковые значения для a, b или с.

ENTITY e;
     a, b, c : INTEGER;
     UNIQUE
     ur1 : а;
     ur2 : b;
     ur3 : с;

END_ENTITY;

2 Объект person_name может быть определен следующим образом:

ENTITY person name;

last

: STRING;

first

: STRING;

middle

: STRING:

nickname

: STRING;

END ENTITY;


Данный объект может быть использован следующим образом:

ENTITY employee;

badge

: NUMBER;

name

: person_name;

UNIQUE

ur1

: badge, name;

END_ENTITY;


В данном примере два экземпляра объекта person_name могли бы иметь одинаковый набор значений для четырех атрибутов. Однако для объекта employee введено требование, чтобы совместное использование атрибутов badge и name было уникальным. Таким образом, два экземпляра объекта employee могут иметь одинаковое значение атрибута badge и одинаковое значение атрибута name. Однако никакие два экземпляра объекта employee не могут иметь одинаковый экземпляр атрибута badge и одинаковый экземпляр атрибута name, поскольку при совместном использовании данная комбинация экземпляров должна быть уникальной (см. 9.6 по поводу способа описания уникальности значений атрибутов).

9.2.2.2 Правила области определения (условие WHERE)

Правила области определения ограничивают значения отдельных атрибутов или комбинаций атрибутов для каждого экземпляра объекта. Все правила области определения указывают после ключевого слова WHERE.

   Синтаксис:

     338 where_clause = WHERE domain_rule ' ; ' { domain_rule ' ; ' } .