Скачиваний:
79
Добавлен:
02.05.2014
Размер:
2.54 Mб
Скачать

22.7. Операторы обобщения для интервалов

В этом разделе будут рассмотрены два чрезвычайно важных оператора: UNFOLD (развернуть) и COALESCE (свернуть). Они обрабатывают множество интервальных значе­ний того же типа, что и их собственный операнд, и возвращают другое такое множество. Результат в обоих случаях можно рассматривать как определенную каноническую форму для исходного множества (о канонической форме читайте в разделе 17.3 главы 17).

Дальнейшее обсуждение будет основываться на следующих исходных данных. Пусть XI и Х2 представляют собой два показанных ниже множества соответственно.

{ [d01,d01], [d03,d05], [d04,d06] }

{ [d01,d01], [d03,d04], (d05,d05]f [d05,d06] }

8 Возможно, в этом случае более подходящим названием оператора было бы INCLUDES (включает), тогда можно было бы использовать ключевое слово CONTAINS (содержит) для опе­ратора, обратного оператору Ш, определив его как i CONTAINS р, что равносильно р IN L

Нетрудно заметить, что XI и Х2 — это не одно и то же множество. Почти так же легко заметить, что множество всех точек р, таких, которые содержатся в некотором интервале в XI, то же самое, что и множество всех точек р, таких, которые содержатся в некотором интервале в Х2. В это множество включены точки dOl, d03, d04, d05 и d06. Однако по со­ображениям, которые вскоре станут понятными, нас не так интересует множество самих точек, как соответствующее множество единичных интервалов. Назовем его ХЗ.

{ [d01,d01], [d03,d03], [d04,d04], {d05,d05}, [d06,d06] }

Говорят, что интервал ХЗ — это развернутая форма интервала XI Х2). В общем случае, если X является множеством интервалов и все они имеют один и тот же тип, раз­вернутая форма множествах— это множество всех интервалов вида [р, р], где р точка в некотором интервале из множества X.

Отметим, что множества XI, Х2 и ХЗ имеют разную кардинальность, т.е. отличаются количеством элементов. В нашем примере получилось так, что множество ХЗ, т.е. раз­вернутая форма, имеет наибольшую кардинальность среди всех трех множеств примера. Но можно легко найти такое множество Х4, которое имеет ту же развернутую форму, что и множество XI, но кардинальность которого больше кардинальности множества ХЗ (упражнение для читателя). Также легко можно найти более интересное, и единственное, множество Х5, которое имеет ту же развернутую форму, но минимально возможную кар­динальность.

{ [d01,d01], [d03,d06] }

Множество Х5 называют свернутой формой множества XI (а также Х2, ХЗ и Х4). В общем случае, если X является множеством интервалов и все они имеют один и тот же тип, свернутая форма множества X— это множество У, элементами которого являются интервалы одного и того же типа, такие, что множества X и Y имеют одну и ту же развер­нутую форму и не существует двух отдельных элементов il и i2 множества Г, таких, что оператор il MERGES i2 возвращает значение истина. Отметим, что, как мы уже видели, многие различные множества могут иметь одну и ту же свернутую форму. Кроме того, определение свернутой формы зависит (а определение развернутой формы не зависит) от определения функции следования для соответствующего точечного типа.

Теперь можно определить операторы UNFOLD и COALESCE. Пусть X— это множество интервалов типа INTERVAL {РТ). Тогда оператор UNFOLD возвращает развернутую форму множества X, а оператор COALESCE — свернутую форму множества X.

Замечание. Следует подчеркнуть, что термины развернутая форма и свернутая фор­ма не являются стандартными. Фактически еще нет стандартных терминов для этих по­нятий, хотя сами понятия, безусловно, обсуждаются в литературе.

Рассмотренные канонические формы играют важную роль в решениях, к которым мы, наконец, начали приближаться, чтобы найти подходы к разрешению проблем, обсу­ждаемых в разделе 22.3. Однако операторы UNFOLD и COALESCE— это не совсем то, что нам нужно. Они представляют лишь этап на пути к нашей цели. Нам необходимы неко­торые реляционные аналоги данных операторов, поэтому в следующем разделе будут да­ны определения таких аналогов.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]