Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
348.doc
Скачиваний:
12
Добавлен:
30.04.2022
Размер:
2.67 Mб
Скачать

Примеры использования реляционной алгебры для выражения словесных запросов в виде формулы

1. Получить имена поставщиков, которые поставляют деталь P2:

((SP JOIN S) WHERE P# = ’P2’) [SNAME].

2. Получить имена поставщиков, которые поставляют по крайней мере одну красную деталь:

(((P WHERE COLOR = ‘Red’) JOIN SP) [S#] JOIN S) [SNAME]

или

(((P WHERE COLOR = ‘Red’) [P#] JOIN SP) JOIN S) [SNAME].

3. Получить имена поставщиков, которые поставляют все детали:

((SP [S#, P#] DIVIDEBY P [P#] JOIN S) [SNAME].

4. Получить номера поставщиков, поставляющих по крайней мере все те детали, которые поставляет поставщик S2:

SP [S#, P#] DIVIDEBY (SP WHERE S# = ‘S2’) [P#].

5. Получить имена поставщиков, которые не поставляют деталь P2:

((S [S#] MINUS (SP WHERE P# = ‘P2’) [S#]) JOIN S) [SNAME].

Назначение реляционной алгебры

Основная цель реляционной алгебры – обеспечить запись выражений. Возможно следующее применение таких выражений:

  • определение области выборки, т.е. определение данных для их выбора;

  • определение области обновления, т.е. определение данных для их вставки, изменения или удаления как результата операции обновления;

  • определение (именованных) виртуальных отношений, т.е. определение данных для их визуализации через представления;

  • определение снимка, т.е. определение данных для сохранения в виде «мгновенного» снимка отношения;

  • определение правил безопасности, т.е. определение данных, для которых осуществляется контроль доступа;

  • определение требований устойчивости, т.е. определение данных, которые входят в область для некоторой операции управления одновременным доступом;

  • определение правил целостности, т.е. некоторых особых правил, которым должна удовлетворять база данных, наряду с общими правилами, представляющими часть реляционной модели и применяемыми к каждой базе данных.

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

Операции расширения и подведения итогов

Многие авторы предлагали дополнительные операторы помимо восьми основных. Наиболее часто встречаются операторы расширения и подведения итогов.

Операция расширения (EXTEND) позволяет из определенного отношения создать новое отношение, содержащее дополнительный атрибут, значения которого получены посредством некоторых скалярных вычислений.

Синтаксис:

EXTEND A ADD exp AS Z.

Результатом этого выражения будет отношение с заголовком, эквивалентным заголовку отношения А, расширенному новым атрибутом Z, который подсчитывается вычислением скалярного выражения exp для кортежа отношения А. При этом отношение А не должно иметь атрибута Z и выражение exp не должно ссылаться на атрибут Z.

Пример:

EXTEND P ADD (WEIGHT*454) AS GMWT;

EXTEND (P JOIN SP) ADD (WEIGHT*QTY) AS SHIPWT;

EXTEND S ADD COUNT ((SP RENAME S# AS X) WHERE X=S#) AS NP.

Атрибут NP в результирующем отношении представляет количество деталей, поставляемых поставщиком, который идентифицируется соответствующим значением S#.

Функция COUNT – пример итоговой функции, т.е. функции, берущей в качестве аргумента множество значений и возвращающей одно значение. Также используются следующие итоговые функции: SUM (сумма), AVG (среднее значение), MAX (максимальное значение), MIN (минимальное значение).

Таким образом, операция расширения обеспечивает возможность «горизонтального» или «построчного» вычисления в алгебре. Операция подведения итогов (SUMMARIZE) выполняет аналогичную функцию для «вертикальных» вычислений.

Синтаксис:

SUMMARIZE A BY (A1, A2, …, An) ADD exp AS Z,

где A1, A2, …, An – отдельные атрибуты отношения А.

Результатом этого выражения будет отношение с заголовком {A1, A2, …, An, Z} и с телом, содержащим все такие кортежи t, которые являются кортежами проекции отношения А по атрибутам A1, A2, …, An, расширенного значением для нового атрибута Z; такое новое значение Z подсчитывается вычислением итогового выражения exp по всем кортежам отношения А, которое имеет те же самые значения для атрибутов A1, A2, …, An, что и кортеж t.

Пример:

SUMMARIZE SP BY (P#) ADD SUM (QTW) AS TOTQTY – вычисляется отношение с заголовком {P#, TOTQTY}, в котором существует один кортеж для каждого значения P# в отношении SP; в этом кортеже содержится значение P# и соответствующее общее количество деталей.

SUMMARIZE (P JOIN SP) BY (CITY) ADD COUNT AS NSP – результат будет следующим:

CITY

NSP

London

Paris

Rome

5

6

1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]