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

       

Трансляция выражений.


Интересным является вопрос о том, откуда берется вычисляющее выражение stf', что оно собой представляет. Не вызывает сомнения, что выражение stf' определяется существующим на уровне представления вычисляющим выражением f - то есть, речь идет о трансляции определенного на уровне представления выражения f в выполняемое на уровне хранения выражение stf'.

Замечание. Значение операнда stt.a' можно рассматривать как результат простейшей операции, возвращающей значение переменной stt.a'. Эту операция определяется задаваемым на уровне представления выражением AS STORED, указывающим, что компонент реализуется как хранимый.

В чем же заключается трансляция? Обратим внимание на то, что выражение f представляет собой последовательность операций, возможно, использующих в качестве операндов компоненты некого, вполне конкретного объекта типа t. Выражение же stf', исходя из свойств используемой РСУБД, представляет собой последовательность операций, определенных в реляционной модели данных и использующих в качестве операндов переменные отношений уровня хранения, каждая из которых содержат данные о множестве объектов.

Обратимся к традиционным ОО-языкам программирования. Описывая метод, манипулирующий атрибутами объекта, мы подразумеваем, что этот метод будет вызван у вполне конкретного объекта. В С++ , например, такой конкретный объект в теле метода определяется необязательным для использования ключевым словом this (по сути, this есть не что иное как ссылка на данный конкретный объект). Оттранслировав этот метод, мы получим процедуру на машинном языке. Обязательным параметром этой процедуры будет значение, представляющее собой адрес участка машинной памяти - подразумевается, что в этом участке памяти хранятся данные некоторого конкретного объекта из всего множества объектов, данные о которых хранятся в памяти.

В самом первом приближении R*O транслятор работает по схожему принципу, что подразумевает, что, передав ему на вход метод объекта, на выходе мы получим процедуру, получающую в качестве обязательного аргумента значение OID.

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