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

       

определяет набор таких преобразований для


Например, Розенталь (Rosenthal) [RGL90] определяет набор таких преобразований для внешнего соединения.



Рис. 2. Инициирующие взаимодействия между правилами

В этом разделе мы обсудим набор правил в Starburst, которые приводят к слиянию блоков SELECT. На рис. 2 показаны зависимости между правилами, возникающие в тех случаях, когда выполнение одного правила (хвостовая часть стрелки) приводит к удовлетворению условия другого правила (головная часть стрелки). Представляя эти зависимости, мы не утверждаем, что это полный набор. Мы преследуем цель представить наиболее важные зависимости, чтобы проиллюстрировать полезность каждого правила при слиянии блоков SELECT. Поскольку этот набор правил служит для слияния блоков SELECT, представляемое первым правило «SELECT merge» (SELMERGE) транзитивно зависит от каждого из других правил и образует фокус наших измерений.

Прежде чем продолжать изложение, следует заметить, что число требуемых нами правил поддерживается достаточно низким путем обеспечения локальности ссылок: каждое правило пишется со ссылкой на некоторый контекст (например, блок или квантификатор), и в результате правила, вовлекающие более одного блока, могут писаться в стиле «блок за блоком», а не для пар блоков. Это позволяет иметь число правил, зависящее от числа типов блоков, а не от квадрата этого числа или даже хуже. В наборе представляемых здесь правил мы увидим много примеров локальности правил, а в следующем разделе будет показано, как эти правила поддерживаются процессором правил.


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