81.68K
Категория: МаркетингМаркетинг

Применение правил эквивалентных преобразований для решения задач на оптимизацию запросов

1.

Применение правил
эквивалентных преобразований
для решения задач на
оптимизацию запросов

2.

База данных (агентство по недвижимости):
Сотр (табНо, ФИО, должн, зарпл, отдНо);
Отд (отдНо, назв, место);
ОбНедв (недвНо, тип, почтИнд, адрес, квоКомн, арПл, собНо,
риэлНо);
Собств (собНо, ФИО, телефон);
Клиент (клНо, ФИО, телефон, maxЦена);
Осмотр (осмНо, недвНо, клНо, дата, коммент)
Запрос: выдать ФИО и телефоны клиентов, осматривавших
объект недвижимости с номером 397.

3.

SQL-формула:
SELECT Клиент.ФИО, Клиент.телефон
FROM Клиент, Осмотр
WHERE Осмотр.недвНо=397 AND
Клиент.клНо=Осмотр.клНо;
Реляционная формула:
Q0: ФИО, телефон( недвНо=397 Клиент.клНо=Осмотр.клНо(Клиент Осмотр))
3

4.

Шаг 1-й: применяем Правило 1: p( q(R))= p q(R)= q( p(R))
Выделяем из селекции по конъюнкции условие соединения
Q1: ФИО, телефон( недвНо=397( Клиент.клНо=Осмотр.клНо(Клиент Осмотр)))
Шаг 2-й: декартово произведение и селекцию по соединительному
предикату группируем в одну операцию соединения
Q2: ФИО, телефон( недвНо=397(Клиент⨝Клиент.клНо=Осмотр.клНоОсмотр))
4

5.

Шаг 3-й: применяем Правило 9, частный случай 2:
q(R S)=R q(S); q(R⨝ S)=R⨝ q(S); q(R⨝S)=R⨝ q(S), где q определён
только на атрибутах S.
Вставляем селекцию внутрь соединения
Q3: ФИО, телефон(Клиент⨝Клиент.клНо=Осмотр.клНо недвНо=397(Осмотр))
Далее производим вставку проекции внутрь соединения (Правило 10-a).
Делаем в два этапа (шаг 4 и шаг 5).

6.

Шаг 4-й: вводим в формулу ещё одну проекцию
(Правило 2: π A π A R =π A R , где A1 A2)
1
2
1
Q4: ФИО, телефон( ФИО, телефон, Клиент.клНо, Осмотр.клНо(Клиент
⨝Клиент.клНо=Осмотр.клНо недвНо=397(Осмотр)))
Шаг 5-й: внутреннюю проекцию помещаем внутрь соединения
(Правило 10: π A A (R⨝ S) = π A (R) ⨝ π A (S) )
1
2
1
2
Q5: ФИО, телефон( ФИО, телефон, клНо(Клиент)
⨝Клиент.клНо=Осмотр.клНо клНо( недвНо=397(Осмотр)))

7.

Представление
реляционных
формул в виде
деревьев
Q0:
Q1:
ФИО, телефон
ФИО, телефон
Q2:
ФИО, телефон
недвНо=397
недвНо=397 Клиент.клНо=Осмотр.клНо
Клиент
недвНо=397
Клиент.клНо=Осмотр.клНо

Осмотр
Q3:
Клиент
Q4:
Клиент
Осмотр
ФИО, телефон
Q5:
Осмотр
ФИО, телефон
ФИО, телефон
ФИО, телефон, Клиент.клНо, Осмотр.клНо

Клиент недвНо=397
Осмотр


ФИО, телефон, клНо
клНо
Клиент недвНо=397
Клиент
недвНо=397
Осмотр
Осмотр

8.

Задачи для самостоятельного выполнения
1. Выдать ФИО и зарплату сотрудников, курирующих
объекты недвижимости с количеством комнат, больше 2.
2. Выдать тип и адрес объектов недвижимости,
осмотренных клиентами, готовыми заплатить за аренду
более 30000.
3. Выдать ФИО собственников объектов недвижимости,
курируемых сотрудниками отделов, расположенных в
Москве.
English     Русский Правила