Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационные системы базы данных.DOC
Скачиваний:
101
Добавлен:
02.05.2014
Размер:
839.68 Кб
Скачать

5.9. Оператор "деление" (division)

Функция: для двух реляционных таблиц соответственно делимого R1 и делителя R2 таких, что:

а) каждому типу поля в делителе найдется соответствующий тип поля в делимом;

б) в экземплярах записей делимого имеются типы полей, отсутствующих в делителе, отдельные значения которых в этих экземплярах записей последовательно конкатенированы с каждым экземпляром записи в делителе, будет получена таблица-частное R, которая:

а) включает типы полей из числа содержащихся в делимом, но отсутствующих в делителе;

б) включает значения полей каждого экземпляра записи частного R лишь в том случае, если они в экземплярах записей делимого конкатенированы с каждым экземпляром записи в делителе.

Синтаксис: R = R1 division R2.

Пример.

R1:

D

E

F

R2:

E

F

Ответ: R:

D

1

A

h

3

h

3

A

2

C

a

7

a

7

B

3

B

a

7

e

4

4

B

e

4

5

A

e

4

6

A

a

7

7

B

h

3

8

C

e

4

Примечание.

1) В таблице R лишь одно поле D, так как оно входит в делимое и отсутствует в делителе;

2) Значения А и В входят в R, так как в делимом они соответственно конкатенированы с каждой из трех записей делителя (см. в табл.R1 записи №№ 1, 5, 6 для D=А и №№ 3, 4, 7 для D=В);

3) Значение С отсутствует в R, так как в R1 нет записи Ch3.

5.10. Оптимизация алгоритмов реализации запросов

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

Пусть P11 - одно из возможных значений поля P таблицы R1, которая должна быть объединена с таблицей R2 для получения таблицы R с выполнением ниже сформулированного условия: для таблицы R должны быть выбраны из таблицы, полученной объединением R1 и R2, записи со значением поля P, равным P11.

Для получения ответа возможно два алгоритма:

(5.1) R = (sel <P = P11> (R1)) join R2

и

(5.2) R = sel <P = P11> (R1 join R2),

дающих идентичные результаты. Однако последовательности выполнения операций и затраты будут различны. По формуле (5.1) записи из R1 будут выбираться до операции соединения, а по формуле (5.2) - наоборот после операции соединения.

Применение формулы (5.2) в случае результата операции соединения с количеством записей большим, чем в R1, приведет к увеличению времени реализации процедуры sel, что замедлит работу системы. При таком положении предпочтительнее алгоритм (5.1). В обратной ситуации целесообразнее алгоритм (5.2).

Стандартные языки СУБД реализуют процедуры оптимизации автоматически. При написании БД и СУБД на алгоритмических языках необходимо специально реализовывать эти процедуры написанием программ оптимизации алгоритмов реализации запросов.