объектов класса c, содержащего атрибут
Рассмотрим множество gс = (o1 , … ,on) объектов класса c, содержащего атрибут oa определенный на ранее описанном реляционном домене Rref. Можно говорить о том, что на уровне представления данных возможна операция
gref = p(raref)(gc.oa.raref) <20>
которая возвращает множество объектов gref, на которые ссылаются объекты, входящие в множество gc. На уровне хранения она будет реализовываться следующим образом
p(raref)(gc.oa.raref) OєR p(raref) ( s(raOID О {OID1, … ,OIDn}, raoa = oa)(R')) , где R' = rstorage(oa) <21>
Так же возможна операция, разрешающая обратную ссылку. Например, для объекта oref можно найти множество gbackref объектов класса c, которые ссылаются на него по ссылке oa.raref:
gbackref = p(с) (s(raref = oref)(с.oa.raref)) <22>
На уровне хранения данной операции соответствует следующее выражение:
p(с) (s(raref = oref)(с.oa.raref)) OєR
p(raOID) ( s(raref = OIDrefi, raoa = oa)(R')), где R' = rstorage(oa) <23>
Примером может служить запрос, который будет возвращать количество товара, отгруженного сотрудником с именем Вася Петров
SELECT Sum(ShipmetItems.Pieces)
FROM cShipment
WHERE cShipment.Staff.StaffName = ' Вася Петров ' <П.2>
Вычисляемые атрибуты объектов. Инкапсуляция.
Рассматривая атрибут oa объекта oi, до сих пор мы предполагали, что на уровне хранения он представлен как подмножество кортежей отношения R', oi.oa OєR' s(raOID= OIDi, raoa = oa)
(R') где R' = rstorage(oa). Будем называть такой атрибут хранимым. Однако возможен и другой случай, когда значение атрибута объекта вычисляется исходя из значений других атрибутов данного объекта. Будем называть такие атрибуты вычисляемыми.
Рассмотрим реляционный оператор Ea
Содержание Назад Вперед