Классика баз данных - статьи

       

SELECT mgrno FROM department dept


SELECT mgrno FROM department dept WHERE NOT (EXISTS ( SELECT * FROM richemps rich, project proj WHERE proj.deptno = rich.workdept AND rich.workdept = dept.deptno));

В этом примере возвращаются данные о менеджерах, в отделах которых нет выскооплачиваемых служащих. Применяя EorAPDFR и DISTPDTO, мы делаем так, чтобы у подзопроса имелось body.distinct = PERMIT, что приводит к слиянию с подзапросом представления richemps. После перезаписи запрос выглядит следующим образом:

SELECT mgrno FROM department dept WHERE NOT (EXISTS ( SELECT * FROM employee emp, project proj WHERE proj.deptno = emp.workdept AND emp.workdept = dept.deptno AND emp.salary > 50000));

Правило 5. Common Subexpression Replication (репликация общих подвыражений)

Это правило (таб. 7) приводит к избавлению от общих подвыражений в графе OGM путем их репликации.Это позволяет произвести слияние одного или обеих полученных блоков.



Таб. 7. Правило 5 – BOXCOPY

Правило 6. Add Keys (добавление ключей)

Для заданных двух блоков SELECT upper и lower, таких что lower является областью определения только F-квантификатора в upper, правило ADDKEYS (таб. 8) гарантирует, что upper и lower будут слиты. Это делается путем модификации любого блока, сохраняющего дубликаты, таким образом, чтобы в нем можно было безопасно удалять дубликаты. Мы достигаем этого путем добавления «ключевых» столбцов (или уникальных ID кортежей) к источникам входных данных, которые проходят в блок SELECT. После того, как это сделано, мы можем удалять дубликаты из блока SELECT безо всякого воздействия, поскольку для каждого кортежа в блоке имеется уникальный ключ, полученный путем конкатенации ключей входных источников.



Таб. 8. Правило 6 – ADDKEYS

Снова отметим «локальность» этого правила – данный блок ссылается на нижележащие блоки только через F-квантификаторы, областями определения которых они являются, и поэтому типы нижележащих блоков становятся несущественными.

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

Содержание  Назад  Вперед