Database Programming & Design



         

Синергия


Большие объекты, определяемые пользователями типы и функции,

ограничения и триггеры представляют в отдельности мощные

возможности. Но истинная объектно-реляционная мощность DB2

происходит из синергии этих возможностей. В качестве примера

рассмотрим, как объектно-реляционные возможности DB2 могут быть

использованы на обеспечения хранения в базе данных

многоугольников.

Поскольку отсутствует предопределенный тип данных

"прямоугольник", то прежде всего нужно понять, каким образом

прямоугольники будут представляться в базе данных. Поскольку

прямоугольники потенциально могут быть довольно большими, мы

будем использовать для их представления тип больших объектов

BLOB. Но мы хотели бы отличить это представление от других

объектов типа BLOB и поэтому создадим индивидуальный тип POLYGON:

CREATE DISTINCT TYPE POLYGON AS

BLOB(1M);

Можно выбрать различные реальные представления многоугольников

внутри большого объекта. Например, это может быть

последовательность чисел, первое из которых задает число вершин

многоугольника, а следующие содержат координаты вершин.

После создания индивидуального типа желательное поведение

многоугольников может быть указано путем создания набора

соответствующих UDF. По крайней мере одна из этих функций должна

быть "конструктором", создающим многоугольник на основе более

простых типов, таких как POINT или DOUBLE. Работа

функции-конструктора состоит в упаковке примитивных частей

многоугольника в BLOB с последующим преобразованием типа BLOB к

типу POLYGON (для этого следует использовать сгенерированную

системой функцию преобразования типов POLYGON(BLOB).

Ниже перечислены некоторые из UDF, задающие поведение типа

POLYGON. Эти функции могут быть написаны, например, на языках Си

или Си++.

degree(Polygon) returns Integer;

area(Polygon) returns Double;

perimeter(Polygon) returns Double;

rotate(Polygon, Double) returns Polygon;

intersect(Polygon, Polygon) returns Polygon;

Теперь можно создавать таблицы со столбцами типа POLYGON.




Содержание  Назад  Вперед