Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Базы данных2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

6.3.4.Объектные расширения реляционных субд. Язык sql-3.

Попытки совместить средства манипулирования данными реляционной модели и способы описания внешнего мира объектно-ориентированной модели получили развитие в языке SQL-3. (см. статью Д. Бича К объектным базам данных, опубликованную в журнале "Открытые системы" N 4 за 1994 г.). Здесь мы рассмотрим только предлагаемые способы определения данных.

Разработчики SQL-3 считают, что характеристики объекта определяется описанием строки таблицы. Поэтому, вводится специальная возможность описания нового типа данных:

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.

Здесь свойства SQL-3 рассмотрены весьма кратко. Более полное представление о них можно получить из указанной статьи Д.Бича, а также из литературы, посвященной возможностям СУБД Oracle 8, которая поддерживает данный язык.

Заметим, что К. Дейт придерживается мнения, что областью определения объекта надо считать не строку, а столбец реляционной таблицы.

Еще один подход к объединению свойств реляционной модели и объектно - оринетированного программирования обсуждается в следующем параграфе.

Литература:

  • М. Аткинсон, Ф. Бансилон, Д. ДеВитт, К. Диттрих, Д. Майер, С.Здоник Манифест систем объектно-ориентированных баз данных. СУБД N 4, 1995

  • А. Ю. Медников Объектно-ориентированные базы данных сегодня или завтра? Открытые системы N 4, 1994

  • Ким Вон Технология объектно-ориентированных баз данных. Открытые системы N 4, 1994

  • В. Пржиялковский Новые одежды знакомых СУБД: Объектная реальность, данная нам. СУБД N4, 1997

  • С. Кузнецов Объектно-ориентированные базы данных - основные концепции, организация и управление: краткий обзор.