Таким образом, схема стержневого отношения
Таким образом, схема стержневого отношения должна выглядеть следующим образом:
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 существующее в каталоге системы.
Содержание Назад Вперед