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

       

В запросе используется представление для


В запросе используется представление для вычисления договорной цены каждого типа изделия.

Пример 3.

CREATE VIEW itemprice AS (SELECT DISTINCT itp.itemno, itp.NegotiatedPrice FROM itp WHERE NegotiatedPrice > 1000);

SELECT itemprice.NegotiatedPrice, itm.type FROM itemprice, itm WHERE itemprice.itemno = itm.itemno;

Правило ADDKEYS применяется к (верхнему) блоку SELECT запроса, позволяя правилу SELMERGE слить с запросом представление itemprice. Заметим, что SELMERGE меняет атрибут запроса body.distinct на ENFORCE, удаляя, таким образом, дубликаты, изначально удалявшиеся в представлении. Результирующий запрос выглядит следующим образом:

SELECT DISTINCT itp.NegotiatedPrice, itm.type, itm.itemno FROM itp, itm WHERE itp.NegotiatedPrice > 1000 AND itp.itemno = itm.itemno;

SQL-представление переписанного запроса не точно соответствует семантике преобразованного QGM. В реальном переписанном запросе результирующий столбец itm.itemno используется в течение удаления дубликатов, но его значения не поставляются в результат запроса.

2) Как мы покажем, даже некоторые из них поддаются преобразованию к одиночной операции SELECT!

3) Как отмечается в [HP88], важность инициации этого правила придает тот факт, что в ранних реляционных системах, таких как System R, поддерживались только подставляемые представления.

4) Если запросы коррелируют, логика копирования усложняется. Этот вопрос не рассматривается в данной статье, но в варианте Starburst этого правила обработка производится корректно.


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