Лекция 4. Типы данных
Логический литерал
Простой строковый литерал
Для представления текстовых значений не может занимать несколько строк и может быть либо простой, либо кодированный (рис. 5).
а
б
Рис. 5. Структура простого и кодированного строковых литералов [5]: а-простой, б-кодированный
Для представления встроенных в EXPRESS констант (true, false, unknown)
Основной функцией типа данных является задание области допустимых значений атрибута сущности. Всего в EXPRESS существует 5 категорий типов данных:
- простые;
- агрегированные;
- поименованные;
- составные;
- обобщенные.
Простой тип –встроенный тип данных.Областью его значений являются литералы. Понятие простого типа может быть использовано без предварительного объявления. Литералы не могут быть разложены на более мелкие составляющие.
В EXPRESS присутствуют семь простых типов данных:
-числовой тип(NUMBER). Все числовые литералы, включая вещественные и целочисленные;
-вещественный тип (REAL).Все вещественные (нецелые) числа, без ограничения на точность. В противном случае точность указывается при объявлении типа после ключевого слова в скобках (например, REAL(5)) (рис.6).
Рис. 6. Структура вещественного типа данных [5]
- целочисленный (INTEGER). Область значений – все целые числа (целочисленные литералы);
- строковый (STRING). Область значений – последовательности символов. При необходимости ограничение последовательности символов указывается в круглых скобках после ключевого слова, по аналогии с вещественным типом. Если последовательность символов имеет фиксированную длину, то после объявления типа присутствует ключевое слово FIXED (рис.7).
Рис. 7. Структура строкового типа данных [5]
- логический (LOGICAL). Область значений – логические литералы TRUE, FALSE, UNKNOWN. Старшинство значений обозначено неравенством: FALSE < UNKNOWN < TRUE;
- булевский (BOOLEAN). Область значений – логические литералы TRUE, FALSE. Старшинство значений обозначено неравенством: FALSE < TRUE;
- двоичный тип (BINARY). Область значений – это последовательность битов (двоичные литералы). Если последовательность битов имеет ограничение по длине, соответствующее значение указывается в круглых скобках. При фиксированной длине ключевое слово FIXED ставится после объявления типа (рис.8).
Рис. 8. Структура двоичного типа данных [5]
Агрегированный типпредставляет собой встроенный тип языка, элементами области значений которого являются наборы значений. В такой набор включается значение только одного типа, называемого базовым. А сам набор конкретных значений называется экземпляром агрегированного типа, а его отдельные значения называются элементами агрегированного типа.
Существует четыре агрегированных типа:
- массив (ARRAY);
- список (LIST);
- множество (SET);
- мультимножество (BAG).
На агрегированные типы языка могут накладываться дополнительные ограничения, требующие уникальности всех элементов, (в таком случае употребляется слово UNIQUE) , или разрешающие отсутствие отдельных элементов в наборе значений (OPTIONAL).
Многомерные агрегированные типы.Для получения многомерного агрегированного типа необходимо задать в качестве базы одного агрегированного типа другой подобный тип. Таким образом можно получать агрегированные типы неограниченной вложенности, поддерживающее произвольное количество измерений.
Поименованный тип -это специально объявленный в информационной модели тип данных, имеющий уникальное имя. Такие типы предназначены для двух случаев:
1) если необходимо использовать сущность в качестве типа данных;
2) когда не хватает возможностей языка EXPRESS и требуется их расширение.
Определяемый тип данныхзадается на основе какого - либо другого типа данных, в том числе и определяемого, накладывая на него некоторые ограничения.
Составной типпредназначен для задания типов с нестандартными для EXPRESS областями значений. Составные типы используются в тех случаях, когда более легким путем является не положение ограничений на какой - либо тип, а простое перечисление всех его возможных значений. Составные типы могут быть использованы только для формирования определяемых типов и не подходят для прямого указания областей значений атрибутов сущностей [5]. Существует два основных типа данных: перечисление (ENUMERATION) и выбор (SELECT). Тип «Перечисление» явно перечисляет все экземпляры области значений. Тип «Выбор» задает перечень возможных областей значений.