Язык SQL -3 и СУБД Oracle 8.

Попытки совместить средства манипулирования данными реляционной модели и способы описания внешнего мира объектно-ориентированной модели получили развитие в языке SQL -3.

1) Характеристики объекта определяется описанием строки таблицы. Поэтому вводится специальная возможность описания нового типа данных:

Create type Address (

number char (6),

street char (30),

aptno integer,

city char (30),

state char (2),

zip integer

);

На основе нового типа могут быть определены таблицы, например:

Create table Addresses of Address;

Новые типы допускается использовать и для определения столбцов (т.е. игнорируется требование атомарности атрибутов реляционной модели):

Сreate table People of new type Person (

name char (30),

address Address,

birthdate date,

);

Наследование определяется с помощью фразы under .

Create type Employee under Person (

empno char(10),

dept ref(Department)

);

Здесь атрибут dept является ссылкой на объект, хранящийся в таблице Department . Т.е. в понятиях реляционной модели в этом столбце должен быть записан внешний ключ, указывающий на на одну из строк таблицы Department . На самом деле, в SQL -3 предполагается, что каждый объект имеет уникальный идентификатор - OID , именно он используется при создании ссылок на объекты.

Также в операторе CREATE TABLE можно определить и методы доступа к вновь созданным типам данных:

Create table People of new type Person (

name char(30),

address Address,

birthdate date

function age(:р ref(Person)) return date;

begin

current_age:=:р.birthdate-current_date;

return current _ age ;

end ;

);

В этом примере задана функция age , которая вычисляет текущий возраст объекта типа Person , хранимого в таблице People . К данной функции можно обращаться из оператора SELECT .

Oracle8i совместим с минимальным уровнем ANSI/ISO (SQL92). Он поддерживает большинство возможностей, заложенных в более продвинутые уровни SQL92, и даже некоторые из SQL3, но зачастую эти возможности реализованы в нем по-своему. В Oracle создан свой язык для создания триггеров, хранимых процедур и просто скриптов (в Oracle их принято называть безымянными блоками). Этот язык получил название PL/SQL (Program Language SQL). Внешней процедурой в Oracle является подпрограмма, хранимая в DLL, или метод элемента библиотеки Java-класса.

В версии 8.0 были введены объектные типы данных. Такие типы данных можно применять при создании локальных и пакетных переменных, при объявлении колонок БД и при объявлении типа записи в таблицах БД. Причем в случае, когда объект олицетворяет всю запись целиком в качестве первичного ключа, используется так называемая объектная ссылка ( REF ). REF является вполне самостоятельным типом данных и может использоваться для ссылки на такую объектную запись из других таблиц. Объекты поддерживают только инкапсуляцию, но не поддерживают не наследования, не полиморфизма.

назад главная вперед