Классика баз данных - статьи

       

версиях Oracle8 объектные типы назывались


В бета- версиях Oracle8 объектные типы назывались "абстрактными

типами данных" (термин, используемый в проектах SQL3 и в

академических кругах), но позже было решено, что термин

"объектные типы" является более понятным и точным. (На самом

деле, объектные типы Oracle8 представляют собой обобщение

именованных типов строк и абстрактных типов данных SQL3.)

В объектных типах могут определяться методы, реализация которых

может быть представлена на PL/SQL или в виде вызовов функций 3GL.

Методы похожи на хранимые процедуры и могут вызываться из SQL или

PL/SQL для вычисления и получения информации об объектах данного

типа и/или их модификации. Каждый объектный тип имеет по меньшей

мере один метод - конструктор. Это определенная в системе

функция, которая создает объект данного типа. В дополнение к

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

специальные методы, меняющие для объектного типа порядок

сортировки и операции сравнения.

Объектные типы можно использовать двумя способами. Во-первых,

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

таблицы, специфицируя тип таблицы целиком:

CREATE TABLE customers OF customer_type

В этом примере каждая строка результирующей таблицы будет

содержать объект типа customer_type с членами-атрибутами,

специфицированными при объявлении этого объектного типа (другими

словами, "name" и "no_of_purchases"). К каждой строке-объекту

Oracle8 добавляет "скрытый" столбец, содержащий генерируемый

системой уникальный идентификатор (ID) объекта. Этот ID можно

использовать в указателях (REF) на объекты таблицы из других

таблиц или реализовывать указатели между объектами этой же

таблицы. При желании столбец ID можно индексировать для более

быстрого поиска REF.

Во-вторых, объектные типы можно использовать для определения

типов столбцов. В этом случае при определении типов столбцов

таблицы имена объектных типов помещаются вместо имен базовых

типов. Например, объявленный выше тип customer_type можно было бы


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