Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / LCD / Объектно-ориентированные средства.doc
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
105.47 Кб
Скачать

Isdn in integer default null,

pages IN INTEGER DEFAULT NULL

} RETURN SELF AS RESULT,

-- Прочие методы

OVERRIDING MEMBER FUNCTION print

RETURNVARCHAR2,

. . .

}

Методы сравнения.

Для упорядочивания объектов объектного типа используются специ­альные методы сравнения ORDERиMAP. Эти методы вызываются автоматически в тех случаях, когда необходимо определение результатов:

  • Отношений «равно», «меньше», «больше»

  • Предикатов “BETWEEN”, а также “IN”

  • Упорядочений “ORDER BY”, “GROUP BY” и различий “DISTINCT”.

  • Ограничений уникальности “UNIQUE” и первичного ключа “PRIMARYKEY”.

Функция ORDERимеет один явный входной параметр того же типа, и один неявный входной параметр, имеющий фиксированное имяSELF. Возвращаемое значение имеет типINTEGER, а его значение определяется так:

Результат сравнения

Возвращаемое значение

SELF< второй_объект

Любое отрицательное (обычно –1)

SELF= второй_объект

0

SELF> второй_объект

Любое положительное (обычно +1)

Результат не определён (например, если один из объектов - NULL)

NULL

Функция MAPне имеет параметров и возвращает скалярный тип (DATE,NUMBERилиVARCHAR2), причём каждый объект отображается функцией в это скалярное пространство.

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

Если же для объектного типа не было создано ни метода ORDER, ни методаMAP, то поддерживается только два варианта сравнения «равно»- «не равно». Объекты равны, если они имеют одинаковый объектный тип и если равенство выполняется для каждого из атрибутов.

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

В приведенных ниже примерах продемонстрирован ряд наиболее употребительных объектных типов, а также показано, как их использовать при работе с базами данных. Эти примеры иллюстрируют различные способы применения объектных типов в базах данныхOracle- начиная с незначительной модернизации реляционной базы данных и заканчивая построением объектной базы данных.

Создание специальных типов данных при помощи объектных типов

Самый простой способ применения объектных типов - создание с их помощью специальных типов данных, которые затем можно использо­вать для более удобного построения объектов реляционных баз данных. Например, с помощью следующего оператора создается новый тип ADDRESS_TYPE:

CREATE OR REPLACE TYPE pub.address_type AS OBJECT (

street1 VARCHAR2(50),

street2 VARCHAR2(50),

city VARCHAR2(50),

state VARCHAR2(25),

zipcode VARCHAR2(10),

country VARCHAR2(50));

При создании объектных типов, которые должны быть доступны всем пользователям в системе, рекомендуется вначале создать схему, содержащую общие объектные типы (например, PUB). После этого создайте в этой схеме нужные объектные типы и предоставьте необходимые привилегии каждому из них.

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

Если в описание объектного типа не включено описание атрибутов и методов, то такой объектный тип неполон. Иногда необходимо создавать неполные объектные типы до того, как их вид четко определен, чтобы строить другие объекты, зависящие от таких объектных типов.

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

CREATE TABLE sales.customers (