Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Запрос с оператором умножения
В БД " Разработчики ПП" Перечислить названия и годы создания ПП, разработанных до рождения Фатова Р. Алгоритм реализации Для решения поставленной задачи в целях демонстрации примем среди различных возможных алгоритм с использованием оператора умножения. 1) Выделим названия РТ, задействованных в реализации запроса. Это РТ: " Разработчики" (R1), " Разработанные ПП" (R3). 2) Сформируем таблицу с годом рождения Фатова Р. Для этого сначала выделим его запись из таблицы R1, а затем выберем поле ГодРождения: RT1 = sel < ФИОРазр-ка = 'Фатов Р.'> (R1)
RT2 = proj ГодРожд-я(RT1)
3) Из R3 выделим поля Назв-еПП и ГодСозд-я: RT3 = proj Назв-еПП, ГодСозд-я(R3)
4) Для реализации сравнения по сути запроса выполним произведение таблиц RT2 и RT3: RT4 = RT2 product RT3
5) Из RT4 выберем запись по критерию запроса:
RT5 = sel < RT3.ГодСозд-я < RT2.ГодРожд-я> (RT4)
6) Из RT5 выберем поля. необходимых и достаточных для ответа на запрос:
RT6 = proj RT3.Назв-е, RT3.ГодСозд-я(RT5)
Таким образом, алгоритм ответа на запрос можно записать в виде: 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. Пример.
Примечание. 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; Просмотров: 174; Нарушение авторского права страницы