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

       

объектов класса 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


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