Расширение реляционной модели для лучшего отражения семантики


Примеры - часть 3


R1 ← UGI[SUP = emp] [SUB, PER].

В отношении R1 содержатся имена всех отношений, которые непосредственно подчинены отношению служащие в графе обобщения.

R2 ← DENOTE(R1[SUB]).

R2 – это соответствующее множество отношений.

R3 ← APPLY(TAG, R2).

Для получения множества R3 берется каждое отношение в R2, и к нему добавляется столбец, который содержит столько экземпляров relname для данного отношения, сколько имеется кортежей в этом отношении.

R4 ← UNION/APPLY(R3[RN * SUB]R1).

Естественное соединение с отношением R1 применяется к каждому отношению из R3 с использованием атрибутов rename. Для получения желаемого отношения результирующее множество отношений компрессируется путем многократного применения объединения.

Пример D. Скомбинировать всю информацию из графовых отношений RM/T в одном отношении R, имеющем атрибуты SUB, SUP, PER и RN, где (SUB:m, SUP:n, PER:p, RN:q) принадлежит R тогда и только тогда, когда

  1. q является значением relnamr для помеченного графового отношения, и (SUB:m, SUP:n, PER:p) принадлежит отношению с именем q; или
  2. q является значением relnamr для непомеченного графового отношения, p – неопределенное значение, и (SUB:m, SUP:n) принадлежит отношению с именем q.

Предположим, что тип графового отношения есть G. Не будем делать каких-либо предположений о числе графовых отношений в RM/T или об их именах.

Тогда:

R1 ← DENOTE(CATR[RELTYPE = G] [RN]),

R2 ← APPLY(TAG, R2),

R2 ← /R2.

В последнем выражении требуется внешнее объединение, поскольку не все графовые отношения в RM/T имеют одну и ту же степень.




Начало  Назад  Вперед



Книжный магазин