Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Запрос с оператором умножения



В БД " Разработчики ПП" Перечислить названия и годы создания ПП, разработанных до рождения Фатова Р.

Алгоритм реализации

Для решения поставленной задачи в целях демонстрации примем среди различных возможных алгоритм с использованием оператора умножения.

1) Выделим названия РТ, задействованных в реализации запроса. Это РТ: " Разработчики" (R1), " Разработанные ПП" (R3).

2) Сформируем таблицу с годом рождения Фатова Р. Для этого сначала выделим его запись из таблицы R1, а затем выберем поле ГодРождения:

RT1 = sel  < ФИОРазр-ка = 'Фатов Р.'> (R1)

 

RT1: №Разр-ка ФИОРазр-ка ГодРожд-я Стаж
  R3 Фатов О. 1964 11

 

RT2 = proj ГодРожд-я(RT1)

 

RT2: ГодРожд-я
  1964

 

3) Из R3 выделим поля Назв-еПП и ГодСозд-я:

RT3 = proj Назв-еПП, ГодСозд-я(R3)

 

RT3: Назв-еПП ГодСозд-я
  ПП1 1982
  ПП2 1984
  ПП1 1960
  ПП3 1987
  ПП4 1985

 

4) Для реализации сравнения по сути запроса выполним произведение таблиц RT2 и RT3:

RT4 = RT2 product RT3

 

RT4: RT2.ГодРожд-я RT3.Назв-еПП RT3.ГодСозд-я
  1964 ПП1 1982
  1964 ПП2 1984
  1964 ПП1 1960
  1964 ПП3 1987
  1964 ПП4 1985

 

5) Из RT4 выберем запись по критерию запроса:

 

RT5 = sel < RT3.ГодСозд-я < RT2.ГодРожд-я> (RT4)

RT5: RT2.ГодРожд-я RT3.Назв-еПП RT3.ГодСозд-я
  1964 ПП1 1960

 

6) Из RT5 выберем поля. необходимых и достаточных для ответа на запрос:

 

RT6 = proj RT3.Назв-е, RT3.ГодСозд-я(RT5)

 

RT6: RT3.Назв-еПП RT3.ГодСозд-я
  ПП1 1960

 

Таким образом, алгоритм ответа на запрос можно записать в виде:

projRT3.Назв-еПП, RT3.ГодСозд-я(sel< RT3.ГодСозд-я< RT2.Год

6                                                         5

Рожд-я> (projГодРожд-я(sel< ФИОРазр-ка='Фатов'> (R1)product

                  2                  1                                                       4

proj Назв-еПП, ГодСозд-я(R3))).

3

Примечание.

Цифры под операторами обозначают порядковые номера их выполнения.

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).

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

Контрольные вопросы

1. Что понимается под реляционной алгеброй, ее операторами и операндами?

2. Приведите характеристику оператора UNION и пример.

3. Приведите характеристику оператора DIFFERENCE и пример его применения.

4. Приведите характеристику оператора INTERSECTION и пример его применения.

5. Приведите характеристику оператора PROJ и пример.

6. Приведите характеристику оператора SEL и пример.

7. Приведите характеристику оператора JOIN и пример его применения.

8. Приведите характеристику оператора PRODUCT и пример его применения.

9. Приведите характеристику оператора DIVISION и пример.

10. Каковы цели и критерии оптимизации реализаций алгоритмов запросов?




Поделиться:



Последнее изменение этой страницы: 2019-06-08; Просмотров: 155; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.022 с.)
Главная | Случайная страница | Обратная связь