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

  35790931     

отношения для типа сущностей служащие


Пример A. Скомбинировать все P- отношения для типа сущностей служащие (emp) в единое исчерпывающее P-отношение без потери информации, не опираясь на какие-либо предположения о количестве таких отношений.
Получим сначала имена всех P-отношений для типа сущностей служащие:
R1 ← PG[SUP = emp] [SUB].
Вспомним, что PG – это графовое отношение свойств. Тогда мы получаем соответствующее множество отношений:
R2 ← DENOTE(R1).
Наконец, многократно применяем внешнее естественное соединение по атрибуту EMP (общему для всех отношений в этом множестве):
R3 ← ( EMP)/R2,
где с последующим атрибутом или совокупностью атрибутов указывает, что внешнее естественное соединение должно выполняться относительно этих атрибутов как атрибутов соединения.
Cкомбинируем выражения для R1, R2, R3 в единое выражение и заменим emp на r, где r – это relname для какого-либо типа сущностей. Пусть PROPERTY(r) обозначает результат. Тогда получаем:
PROPERTY(r) = ( r, '')/DENOTE(PG[SUP = r] [SUB]).
Таким образом, PROPERTY отображает relname типа сущностей в соответствующее исчерпывающее P-отношение.
Пример B. Получить имя служащего и должность для всех служащих с отличным (excellent) рейтингом в предположении, что:
  1. имеются различные типы сущностей для каждого типа должности (например, секретарь, водитель грузовика, инженер и т.д.), и категория типа должности (jobtype) производит разбиение множества служащих;

  2. непосредственным обобщением этих типов может быть тип сущностей служащие (emp);

  3. имя и должность служащего записываются в одно или более P-отношений, ассоциированных с типом сущностей служащие;

  4. рейтинг записывается отдельно в некоторое P-отношение для каждого типа должности.



Тогда:
R1 ← UGI[SUP = emp, PER = jobtype][SUB].
Вспомним, что UGI – это отношение безусловного обобщения по включению. Следовательно, R1 – это унарное отношение, в котором содержатся все имена всех E-отношений, которые являются непосредственно безусловно подчиненными отношению служащие.


R2 ← APPLY(PROPERTY, R1).
Здесь R2 – это множество P-отношений, каждое из которых является исчерпывающим P-отношением для одного из relname в R1.
R3 ← APPLY(R2[RATING = excelent]).
R3 – это множество отношений, в точности похожее на R2, за исключением того, что каждое отношение в R3 является ограничением его двойника в R2.
R4 ← APPLY(R3[EMP]).
R4 – это множество отношений, полученных проекцией каждого отношения из R3 на атрибут EMP.
R5 ← (PROPERTY(emp))[EMP, NAME, JOBTYPE]
Здесь исчерпывающее P-отношение для типа сущностей служащие проецируется на его атрибуты – суррогат, имя и должность.
R6 ← UNION/APPLY(R4[EMP = EMP]R5).
Каждое отношение из множества R4 соединяется по сущности служащий с отношением R5. Результат компрессируется путем многократного применения операции объединения для получения R6 – требуемого результата.
Окончательное выражение является примером соединения по сущности, в отличие от соединения по свойству.
Пример C. Пусть некоторая база данных содержит информацию о служащих. Свойства и характеристики, относящиеся ко всем служащим, связываются через посредство PG и CG с типом сущностей служащие. Кроме того, служащие категоризируются по:
  1. должности – инженер, секретарь, техник и т.д.

  2. служебному статусу – постоянный и временный.

В базу данных записывается различные множества свойств и характеристик для всех этих разных специализаций. Граф обобщения UGI показывает типы сущностей инженер, секретарь, техник и т.д. как подчиненные типу сущностей служащие по категории должность, а типы сущностей постоянный и временный – как подчиненные типу сущностей служащие по категории статус.
Требуется получить тернарное отношение R такое, что (E-домен:x, RN-домен:y, PER-домен:z) принадлежит R тогда и только тогда, когда x
является суррогатом некоторого служащего, y – типом сущности x в категории z. Фактически, мы конвертируем информацию категории в новый атрибут отношения на родительском уровне.


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 имеют одну и ту же степень.

Содержание раздела