Пространственные типы данных

Пространственные типы данных появились только в Microsoft SQL Server 2008. Эти типы данных представляют сведения о физическом расположении и форме геометрических объектов. Такими объектами могут быть точки или более сложные объекты, например страны, дороги, озера.

SQL Server поддерживает два пространственных типа данных:

· geometry (плоский) - представляет данные в эвклидовом пространстве (плоской системе координат).

· geography(геодезический) - позволяет сохранять эллипсоидальные (сферические) данные, такие как координаты широты и долготы GPS.

Специальные типы данных

Типы специальных данных не подходят ни к одной из других категорий типов данных. В SQL Server присутствуют следующие особые типы данных: hierarchyid, sql_variant, sysname, table, rowversion, xml, uniqueidentifier, cursor.

Тип данных hierarchyid

В Microsoft SQL Server 2008 был введен новый тип данных hierarchyid, который используется для представления положения в древовидной иерархии. Столбец типа hierarchyid не принимает древовидную структуру автоматически. Приложение должно создать и назначить значения hierarchyid таким образом, чтобы они отражали требуемые связи между строками.

Значения hierarchyid обладают следующими свойствами:

· Исключительная компактность
Среднее число бит, необходимое для представления узла в древовидной структуре с n узлами, зависит от среднего количества потомков у узла. Для представления узла в иерархии организации, насчитывающей 100 000 человек со средним уровнем ветвления 6, необходимо около 38 бит. Эта величина округляется до 40 бит (5 байт), которые необходимы для хранения.

· Поддержка произвольных вставок и удалений
В любой момент можно создать одноуровневый элемент, расположенный справа от заданного узла, слева от заданного узла или между любыми двумя другими одноуровневыми элементами. Свойство сравнения сохраняется, если произвольное число узлов вставляется в иерархию или удаляется из нее.

· Кодировка в типе данных hierarchyid ограничена 892 байтами. Следовательно, узлы, имеющие слишком много уровней, чтобы уместиться в 892 байта, не могут быть представлены типом данных hierarchyid.

 

Тип данных sql_variant

Тип данных sql_variant позволяет сохранять данные различных типов в одном столбце, параметре или переменной. В каждом экземпляре столбца типа sql_variant хранятся значения и метаданные, описывающие эти значения (Базовый тип данных, Максимальный размер, Масштаб, Точность, Параметры сортировки).

 

Тип данных sysname

Тип данных sysname используется в столбцах таблицы, переменных и параметрах хранимых процедур, содержащих названия объектов. Тип данных sysname является псевдонимом типа nvarchar(128), по умолчанию sysname имеет значение NOT NULL. В более ранних версиях SQL Server тип sysname фунционально эквивалентен varchar(30).

 

Тип данных table

Тип данных table используется для определения временных таблиц. В переменных этого типа сохраняются результирующие наборы для последующей обработки. Этот тип данных может использоваться только для определения локальных переменных типа table и значений, возвращаемых пользовательской функцией.

Определение табличной переменной или возвращаемого значения включает определения столбцов, типа данных, точности и размера каждого столбца. Определенная пользователем таблица не может быть использована в качестве пользовательского типа данных.

 

Тип данных rowversion

Значения rowversionявляются двоичными числами, указывающими относительную последовательность, в которой происходило изменение данных в базе данных -значение rowversionизменяется всякий раз при изменении строки. Размер при хранении составляет 8 байт. Тип данных rowversionне связан со временем или с датой.

 

Тип данных xml

Тип данных xml позволяет хранить XML-документы и их фрагменты в базе данных SQL Server. Database Engine позволяет создавать столбцы и переменные типа xml, в которых можно хранить экземпляры XML. При этом размер хранимого экземпляра типа данных xml не должен превышать 2 Гб. SQL Server поддерживает валидацию значений столбцов и переменных типа xml при помощи XML-схем, а также преобразование реляционных данных в xml и обратно.