Магия сохраняет силу


Простые bcf-украшения - часть 3


Тогда, если множество G является опорным для p1, то G является опорным множеством и для p2.

Используя Лемму 4.1, мы покажем, что однофазный алгоритм с простыми bcf-украшениями выполняет все функции, которые должны выполнять украшения.

Функция 1: Если реальные ограничения на таблице доступны во время украшения ее тела, то для функции 1 украшения больше не требуются. В результате абстракция, которую они представляют, не является важной.

Функция 2: Функция 2 обеспечивается паттерном простых bcf-украшений для класса произвольных ограничений; это следует из Леммы 4.1 и основного преобразования методом магических множеств [MFPR90]. Проиллюстрируем это на примере.

ПРИМЕР 4.3 (Простое bcf-украшение):

(P1): SELECT X,Y,Z FROM t(X,Y,Z) WHERE X > 10 AND Y > 10

(P2): SELECT X,Y,Z FROM t(X,Y,Z) WHERE X > Y

(P13): t(X,Y,Z) AS (SELECT DISTINCT X,Y,Z FROM q1(X), q2(Y), u(X,Z))

Для обоих запросов P1 и P2 генерируется украшение tccf. По Лемме 4.1 {q1,q2} является опорным множеством для любого ограничения над двумя первыми аргументами t. Таблицы q1 и q2 должны украшаться по-разному для двух использований tccf, а u должно украшаться как ubf для обоих использований. Если бы мы украшали программу без конструирования магических множеств и без использования информации, за исключением украшения ccf на t, то мы не смогли бы произвести желаемое украшение. Однако с использованием своего однофазного алгоритма мы получаем:

(M1): SELECT X, Y, Z FROM tccf(X,Y,Z) WHERE X > 10 AND Y > 10

(M2): SELECT X, Y, Z FROM tccf(X,Y,Z) WHERE X > Y

(M3): tccf (X,Y,Z) AS SELECT DISTINCT X, Y, Z FROM m_tccf (X,Y), ubf (X,Z))

(M4): m_tccf(X,Y) AS ((SELECT X, Y FROM q1c(X), q2c(Y) WHERE X > 10 AND Y > 10) UNION DISTINCT (SELECT X, Y FROM q1f(X), q2c(Y) WHERE X > Y ))

Отметим разные украшения для q1 в двух операторах SELECT в (M4) и украшение b в (M3), появившиеся по причине наличия магических множеств.




Начало  Назад  Вперед



Книжный магазин