| |||||||
Раздел 3: Язык Express: ограниченияОграничения, накладываемые на экземпляры сущности, выражаются с помощью правил (rules). Правила могут быть общими или локальными. Описание правила, общего для ряда сущностей, начинается со служебного слова rule, далее следуют идентификатор правила, служебное слово for, ссылки на сущности, на которые правило распространяется, и, наконец, собственно ограничения. Локальные правила могут описывать ключевые атрибуты (uniqueness rules) или выражать ограничения, накладываемые на атрибуты некоторой сущности (domain rules). Например, если ключевой атрибут
сущности Z есть составной атрибут X.Y, или, другими словами, одному
сочетанию значений атрибутов X и Y должен соответствовать единственный
экземпляр сущности Z, то
ENTITY Z; X: INTEGER; Y: STRING; UNIQUE X,Y; END_ENTITY; Ограничение на атрибуты некоторой сущности выражается с помощью
правила в теле этой сущности. Ограничение записывается после слова
where в виде выражения, значениями которого могут быть true, false или
unknown. Допустимыми значениями атрибута будут только те, для которых
выражение принимает значение true. Например, можно записать, что длина
вектора vect = (x,y,z) должна быть равна единице, в виде правила cons:
ENTITY vect; x,y,z: REAL; WHERE cons: x**2 + y**2 + z**2 = 1.0; END_ENTITY; Ограничение where можно использовать в определяемых типах, например:
TYPE size = REAL; WHERE SELF < 12.0; END_TYPE; Здесь служебное слово SELF заменяет идентификатор определяемого типа, т.е. в данном примере значения size должны быть меньше 12.
Пример 1
ENTITY date; day: INTEGER; month: months; year: INTEGER; WHERE days_ok: {1 <= day <= 31}; year_ok: year>0; date_ok: valid_date(SELF); END_ENTITY; |
СПБГУАП, Санкт-Петербург, 2011 год |