Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных.doc
Скачиваний:
114
Добавлен:
16.03.2016
Размер:
5.67 Mб
Скачать

15.2.6. Булевский тип

При определении столбца булевского типа указывается просто спецификацияBOOLEAN.Булевский типсостоит из трех значений:true,falseиunknown(соответствующие литералы обозначаютсяTRUE,FALSEиUNKNOWN).83)Поддерживается возможность построения булевских выражений, которые вычисляются в трехзначной логике. Таблицы истинности основных логических операций показаны нарис. 15.2.

Рис. 15.2.Таблицы истинности основных логических операций в трехзначной логике

15.2.7. Типы коллекций

Начиная с SQL:1999, в языке поддерживается возможность использования типов данных, значения которых являются коллекциями значений некоторых других типов. Обычно под термином коллекцияпонимается одно из следующих образований: массив, список, множество и мультимножество. В варианте SQL:1999, принятом в 1999 г., были специфицированы только типы массивов. В новом стандарте SQL:2003 появилась спецификация типа мультимножества.

Типы массивов

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

83 В стандарте SQL:2003 имеется следующее уточнение: «В этой спецификации не проводится различие между NULL-значением булевского типа данных и истинностным значением UKNOWN, являющимся результатом вычисления предиката, условия поиска или булевского выражения; они могут использоваться взаимозаменяемо и означают в точности одно и то же». С моей точки зрения такой подход во многом является некорректным, но я не буду здесь на этом останавливаться.

типу массива, используется конструкция dt ARRAY [ mc ], гдеdtспецифицирует некоторый допустимый в SQL тип данных, аmcявляется литералом некоторого точного числового типа с нулевой длиной шкалы и определяет максимальное число элементов в значении типа массива (в терминологии SQL:1999 это значение называется максимальной кардинальностью массива). В стандарте SQL:1999 многомерные массивы и массивы массивов не поддерживались. Однако в стандарте SQL:2003 это ограничение было снято, и теперь типом элементов любого типа коллекций может быть любой допустимый в SQL тип данных, кроме самого конструируемого типа коллекции.

Элементам каждого значения типа массива соответствуют их порядковые номера, называемые индексами. Значение индекса всегда должно принадлежать отрезку [1, mc]. Значениями типа массиваdt ARRAY [mc]являются все массивы, состоящие из элементов типаdt, максимальное значение индекса которыхcsне превосходит значенияmc. При сохранении в базе данных значения типа массива занимает столько памяти, сколько требуется для сохраненияcsэлементов. Обеспечивается доступ к элементам массива по их индексам. В частности, можно объявить столбец типаINTEGER ARRAY [10]и при вставке строки в соответствующую таблицу задать значение только пятого элемента массива. Тогда в строку будет занесен массив из пяти элементов, причем первые четыре элемента будут содержать неопределенное значение (NULL).

Основными операциями над массивами являются выборка значения элемента массива по его индексу, изменение некоторого элемента массива или массива целиком и конкатенация (сцепление) двух массивов. Кроме того, для любого значения типа массива можно узнать значение его cs.