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

       

Таким образом, схема стержневого отношения


Таким образом, схема стержневого отношения должна выглядеть следующим образом:

R'0























raOID


Primary key
 


IDC


Foreign key on CLASSES.IDC
 


Рассмотрим выражение

new cShipment;

создающее объект класса cShipment. В результате его обработки система должна добавить в стержневое отношение новый кортеж, поле которого будет содержать уникальный идентификатор созданного объекта, а поле IDC будет определять, что этому объекту соответствует схема класса cShipment. Дальнейшие действия, сводящиеся к операциям над кортежами отношений R', содержащими данные об объектах класса cShipment, должны выполняться в соответствии с этой схемой.

Еще раз вернемся к тому факту, что выражение, создающее объект, может не возвращать указатель на него. Предположим, что в классе cShipment определено инициализирующее выражение (конструктор) принимающее в качестве параметра номер отгрузки. Тогда команда

new cShipment(123);

создаст объект данных описывающих отгрузку под номером 123. В дальнейшем мы можем обращаться к этому объекту как к экземпляру класса cShipment. Например, выражение, изменяющее дату отгрузки, может выглядеть следующим образом.

UPDATE cShipment SET cShipment.SDate = "…" WHERE cShipment.NoS = 123

Отметим следующее. Поскольку для каждого объекта данных на всем протяжении его жизни в стержневом отношении хранится информация о том, что этот объект создан как объект определенного класса, то можно утверждать, что стержневое отношение R'0 и отношение OFA суть одно и тоже. Введенный ранее предикат OFA реализуется на уровне хранения простой выборкой кортежей этого отношения по атрибуту IDC. Например следующая часть выражение <30> s(raOID OFA Ci )( CiE'a (A2, … , A n, …)) будет реализована как

s(IDC = Ci )( R'0 ><(raOID) ( CiE'a (A2, … , A n, …)) )                    <30'>

Релизация предиката ISA немногим более сложна. В этом случае мы должны использовать отношение ISA существующее в каталоге системы.


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