ГОСТ Р ИСО 10303-14—2015
атрибуты получают значения с помощью вычисления соответствующего выражения, представленного
элементом языка
expression
(синтаксическое правило 224). Вычисление выражений производится
в контексте связующего экземпляра из квалифицированного связующего пространства.
Синтаксис:
224 view_attribute_decl - view_attribute_id*OPTIONAL I [
30urce_schema_ref1 base_typeexpression.
134 n’ap_attribute_declaration - (target_parameter_ref ( index_qualifier *
Гgroup_qualifier ] ’.* ] attribur.e_ref I index_qualifier )
expression.
Если класс эквивалентности, определенный элементом языка
identified by class,
содер
жит более одного квалифицированного связующего экземпляра, то значение элемента
expression
вычисляется следующим образом:
- если существуют связующие экземпляры, для которых вычисление значения элемента
expression
(синтаксическое правило 224) не приводит к неопределенному результату, и если все
такие значения, не являющиеся неопределенными, одинаковы (равенство экземпляров) или если су
ществует только одно такое значение, то данное значение присваивается данному атрибуту;
- если для двух или более связующих экземпляров вычисление значения элемента
expression
дает не являющиеся неопределенными неравные результаты или если все вычисления производят не
определенные значения, то данному атрибуту присваивается неопределенное значение.
Пример
—
Данный пример иллюстрирует задание значений, при котором класс эквивалентности
содержит несколько квалифицированных связующих экземпляров. Объявление отображения описано
в
9.4.
(* Исходная схема(* Целевая схема *
SCHEMA sre; SCHEMA tar;
ENTITY employee;ENTITY department;
name: STRING; employee: STRING;
manager: STRING; manager: STRING;
dept: STRING; dept_name: STRING;
END_ENTITY; END_ENTITY;
END SCHEMA; END SCHEMA;
(* Схема отображения *)
SCHEMA_MAP example;
REFERENCE FROM sre AS SOURCE;
REFERENCE FROM tar AS TARGET;
MAP department_map AS d : department;
FROM e : sre.employee;
IDENTIFIED_BY e.dept;
SELECT
d.employee :a e.name;
d.manager :■ e.manager;
d.dept_name := e.dept;
END_MAP;
END SCHEMA MAP;
#l=EMPLOYEE(’Smith’,•Jones’,’Marketing’);
#2=EMPLOYEE(’Doe’,’Jones’,1Marketing’);
В приведенном фрагменте целевой набор данных содержит один экземпляр объекта.
#^DEPA
RTMENT($,’Jones’
,
’Marketing’).
Атрибут
department.dept_name
является неопределенным,
так как результатом вычисления выражения для данного атрибута являются два разных значения
(’Smith’ и ’Doe’).
9.2.6 Упорядочение экземпляров образа и целевых экземпляров
Элемент языка
ORDERED BY
определяет упорядочение связующих экземпляров квалифициро
ванного связующего пространства. Обращения к процедуре частичного связывания (см. 10.4) в соот
ветствующем разделе образа или отображения дают в результате агрегированные структуры, упорядо
ченные в соответствии с элементом языка
ORDERED BY,
если он присутствует.
13