ГОСТ Р ИСО/МЭК 8824-3-2002
10.3 Потайней для табличного ограничения «TableConstraint* является
TableConstraint :: =
SimpIeTableConstraint |
Component RelationConstraint
SimpIeTableConstraint: : = ObjectSet
10.4 Множество объектов «ObjectSet* в ограничении «SimpIeTableConstraint* управляется клас
сом, который появляется в ограничиваемом типе «ObjectCIassFieldType*.
10.5 Семантика «SimpIeTableConstraint* специфицируется с использованием ассоциированной
таблицы ограничивающего множества информационных объектов.
10.6 Имя поля «FieldName* типа, который будет ограничен, используется для выбора приме
няемого столбца ассоциированной таблицы, и при этом применяются следующие правила:
а) для паля типа компонент ограничен тем, что должен быть любым значением одного из
типов в любой строке этого столбца:
б) для поля значения компонент ограничен тем, что должен быть одним из значений в любой
строке этого столбца;
в) для поля множество значений компонент ограничен тем. что должен быть одним из
множества значений в любой из строк этого столбца.
П р и м е ч а н и е — Если для некоторого данного множества объектов сформулированные выше алгорит
мы приводят к недопустимому значению, то ограничение всегда нарушается, если этот компонент присутствует
в значении содержащего тина.
П р и м е р
В примере раздела 10 перечисление б) применяется к компоненту errorCategory:
errorCategory ERROR-CLASS.&category ({ErrorSet)) OPTIONAL, с ассоциированной таблицей
ErrorSet, ограничивающей его возможные значения до «А* и «В».
10.7 Ограничение связи компонента применяется с использованием ассоциированной таблицы
множества информационных объектов и следующей продукции:
ComponentRelationConstraing : : =
« {* DefmcdObjectSet «}»«{* AtNotation «,* + «>*
AtNotation : : =
*<&»
ComponentldLits |
•<Ф.»
ComponentIdList
ComponentIdList :: = identifier «.» +
10.8 Каждый «identifier* в списке «ComponentldList* идентифицирует компонент, порождаю
щим которого является тип «множество*, «последовательность» или выборочный тип. и он должен
быть последним идентификатором «identifier», если компонент, им определяемый, не является
типом «множество», «последовательность* или выборочным типом.
10.9 Вслучае, когда порождающий тип является типом «множество* или «последовательность»,
«identifier* должен быть одним из идентификаторов «identifier* типа «NamedType* в списке типов
компонентов «ComponentTypeList* этого порождающего. Вслучае, когда порождающий тип является
выборочный типом, «identifier* должен быть одним из идентификаторов «identifier* альтернативы
«NamedType* в списке типов альтернатив «AlternativeTypeList* этого выборочного типа.
10.10 Продукция «AtNotation» предоставляет указатель на другие компоненты структуры
АСН. I. в которой она появляется. Порождающая структура для первого идентификатора «identifier*
в списке «ComponentldList* определяется следующим образом:
а) если выбрана первая альтернатива «AtNotation* (нет точки после <•#»), то порождающая
структура является самой внешней, текстуально содержащей тип «множество», «последовательность*
или выборочный тип;
б) если выбрана вторая альтернатива «AtNotation* (есть точка после «&>*). то порождающая
структура является самой внутренней, текстуально содержащей тип «множество* или «последова
тельность*.
П
р и м е ч а н и с - Альтернатива «AtNotation* допустима только тогда, когда она текстуально находится
внутри типа «множество* или «последовательность» и указывает на некоторое другое поле, которое текстуально
находится в том же самом типе «множество» или «последовательность», хотя, возможно, на другом уровне
вложенности.
5