Введение в системы БД (542480), страница 230
Текст из файла (страница 230)
( [с)01,001), [003,606) ) Множество Х5 называют свернутой формой множества Х1 (а также К2, ХЗ и К4). В общем случае, если К является множес~вом интервалов и все они имеют один и тот же тнп, свернутая форма множества К вЂ” это множество У, элементами которого являются интервалы одного и того же типа, такие, что множества Х н У имеют одну и ту же развернутую форму и не существует двух отдельных элементов 11 и 12 множества У, таких, что оператор 11 ИЕЕОЕЯ 12 возвращает значение истина. Отметим, что, как мы уже видели, многие различные множества могут иметь одну н ту же свернутую форму. Кроме того, определение свернутой формы зависит (а определение развернутой формы не зависит) от определения функции следования лля соответствующего точечного типа. Теперь можно определить операторы ОЕРОЬО и СОйЬЕЯСЕ.
Пусть Х вЂ” это множество интервалов типа 1ЕТЕЕЗ)йЬ[РТ). Тогда оператор ОИРОЬО возвращает развернутую форму множества Х, а оператор СОйЬЕЯСŠ— свернутую форму множества К. Замечание. Следует подчеркнуть, что термины развернутая форма и свернутая форма не являются стандартными. Фактически еше нет стандартных терминов для этих понятий, хотя сами понятия, безусловно, обсуждаются в литературе. Рассмотренные канонические формы играют важную роль в решениях, к которым мы, наконец, начали приближаться, чтобы найти подходы к разрешению проблем, обсуждаемых в разделе 22.3. Однако операторы ОЯРОЬО и СОХЬЕЯСŠ— это не совсем то, что нам нужно.
Они представляют лишь этап на пути к нашей цели. Нам необходимы некоторые реляционные аналоги данных операторов, поэтому в следующем разделе будут даны определения таких аналогов. 22.8. Реляционные операторы для обработки интервалов Скалярные операторы для обработки интервалов, описанные в разделе 22.6, конечно, могут использоваться и в скалярных выражениях, которые, в свою очередь, могут применяться в соответствующих местах реляционных выражений. В языке Тцзог)а! [З, например, к таким местам относятся в основном предложения ИЯЕЕЕ в 874 Часть [г.
дополнительные аспекты операторах выборки и предложения АОР в операторах ЕХТЕИР и ЯРИИАК1ХЕ. Так, например, запрос "Определить номера поставщиков, которые могут поставить деталь с номером 'Р2' в день 8" для базы данных, представленной на рис. 22.4, можно выразить следующим образом. ( ЯР РНК1И6 ИНЕКЕ Р» = Р» ('Р2') АИР с(08 1И РРК1Ы6 ) ( Я» ) Замечание. На практике выражение с(08 было бы заменено соответствующим литералом типа РАУ. В качестве другого примера рассмотрим выражение, с помощью которого можно получить отношение, показывающее пары поставщиков, находящихся в одном и том же городе в одно и то же время, вместе с названиями городов и соответствующими датами.
ЕХТЕКР ( ( ( ( Я РНКХИ6 КЕИАИЕ Я» АБ ХБ», 00К1И6 АЯ ХР ) ( ХЯ», С1ТУ, ХР 001Н ( Я РРК1Н6 КЕНАИЕ Б» АЯ УЯ», 0081Н6 АЯ 70 ) ( ХЯ», С1ТУ, 10 ) ) ИНЕКЕ ХР ОчЕКРАРБ 10 ) А00 ( ХР 1НТЕКЯЕСТ 10 ) АЯ 0081Н6 ) ( ХБ», УБ», С1ТХ, РНК1И6 ) Пояснения. С помощью оператора 001И выполняется поиск пар поставщиков, которые находятся в одном и том же городе. Предложение ИНЕКЕ ограничивает результат парами, которые находились в одном и том же городе в одно и то же время. Предложения ЕХТЕНР ... АРР используются для вычисления соответствующих интервалов. И в конце концов с помощью операции проекции получается желаемый результат.
Теперь возвратимся к запросаи3.1 и 3.2 из раздела22.3. Сначала рассмотрим запрос 3.1. В новой формулировке обозначим его как запрос 4.1. Для базы данных, представленной на рнс. 22.4, он будет звучать следующим образом. ° Запрос 4.1. Получить пары атрибутов Я», РРК1И6 для поставщиков, которые могут поставить некоторую деталь в некоторое время, где атрибут РРК1И6 означает период максимальной продолжительности, в течение которого поставщик с номером Б» действительно мог поставить некоторую деталь.
Напомним, что в ранней версии этого запроса (запрос 2.1) необходимо было использовать группирование и обобщение, а именно — обращаться к операции ЯРИИАК1ХЕ. Поэтому неудивительно, что для формулировки запроса 4.1 также нужны определенные операции группнрования и обобщения. Однако в данном случае мы будем формулировать требуемый запрос не сразу, а поэтапно. Первый этап представлен ниже.
И1ТН ЯР РРК1И6 ( Я», 00К1Н6 ) АЯ Т1 (Двоеточие указывает, что существует продолжение этого выражения.) На данном этапе в исходном отношении БР 0081И6 просто отбрасываются номера деталей. Результирующее отношение Т1 имеет следующий вид. Глава 22. Хронологические базы данных Отметим, что в этом отношении содержатся избыточные данные. Например, излишне трижды говорить о том, что поставщик с номером ' Я1' может что-то поставить в день б. Поэтому требуемое отношение, назовем его КЕЯОЬТ, в котором уже нет подобной избыточности, будет таким. Назовем этот результат свернутой формой отношения Т1 по атрибуту ООК1Н6. Подчеркнем, что значение атрибута ООК1Н6 для данного поставщика в этой свернутой форме необязательно должно быть представлено как явное значение атрибута ООК106 для данною поставщика в отношении Т1, производной от которого является данная свернутая форма.
В нашем примере это замечание относится, в частности, к поставщику с номером ' Я4'. Может показаться, что достичь такого состояния совсем несложно, получив эту свернутую форму с помощью простого выражения следующего вида. Т1 СОАЬЕЯСЕ ООК1Н6 Однако к данной цели необходимо продвигаться постепенно. Прежде всего обратите внимание, что термин "свернутая форма" в двух предыдуших абзацах использовался в смысле, который несколько отличается от того, который вкладывался в это понятие в разделе 22.7. Оператор СОАЬЕЯСЕ, как он был определен в разделе 22.7, принимает в качестве входных данных и выдает в качестве выходных данных множество интервалов.
Однако здесь рассматривается другая его версия — фактически перееруженная (см, главу 19) версия этого оператора, когда он в качестве входных данных принимает унарное он~ноя~ение и в качестве выходных данных выдает другое отношение с тем же заголовком, причем оба отношения состоят из кортежей, которые солержат настоящие интервалы. Теперь подробнее рассмотрим этапы, которые позволяют перейти от отношения Т1 к отношению КЕЯОЬТ.
И1ТН ( Т1 6КООР ( РОК1Н6 ) АЯ Х ) АЯ Т2 876 Часть )'. Дополнительньге аспекты (Напомним, что оператор ОЕООР подробно рассматривался в главе 6.) Отношение Т1 представлено ниже. Далее применим новую версию оператора СОАЬЕЯСЕ к отношениям, которые являются значениями атрибута Х (его значения имеют тип отношения). И1ТН ( ЕХТЕМП Т2 СОАЬЕЯСЕ ( Х ) АЯ У ) ( АЬЬ ВОТ К ) АЯ ТЗ Отношение Т3 выглядит так. 877 Глава 22.
Хронологические базы данных Наконец разгруппируем это отношение (опять же, см. главу 6). ТЗ ОМОКООР Х Это выражение служит для получения отношения, которое ранее было названо нами КЕЯОЬТ. Иными словами, обаединив все шаги и сделав небольшие упрощения, получим окончательное выражение, которое в результате даст отношение КЕЯОЬТ. Н1ТН ЯР РОК1Н6 ( Я(), РОК106 ) АЯ Т1, ( Т1 ОКООР ( РОК1К6 ) АЯ Х ) АЯ Т2, ( ЕХТЕНР Т2 АРР СОАЬЕЯСЕ ( Х ) АЯ У ) ( АЬЬ ВОТ Х ) АЯ ТЗ ТЗ ОМОКООР У Очевидно, было бы лучше, если бы можно было получить результирующее отношение КЕЯОЬТ из отношения ТЬ с помощью единственной операции.
С этой целью введем новый оператор "реляционного свертывания" со следующим синтаксисом. К СОАЬЕЯСЕ А Здесь К вЂ” реляционное выражение, а А в некоторый атрибут некоторого интервального типа, и этот атрибут принадлежит отношению, которое данное выражение обозначаетэ. Семантика этих операторов определяется очевидными обобщениями операций группирования, расширения, проекции и разгруппирования, с помощью которых было получено отношение КЕЯОЬТ из отношения Т1. Замечание, Стоит отметить, что свертывание отношения К по атрибуту А предусматривает его группирование по всем атрибутам, кроме атрибута А (напомним, что, как указывалось в главе 6, например выражение Т1 ОКООР(РОК1МО)...
может читаться как "сгруппировать отношение Т1 по атрибуту Я()", где Я() — единственный атрибут отношения Т1, не указанный в прелложении ОКООР). Суммируя все сказанное выше, теперь можно предложить более приемлемую и достаточно простую формулировку за»роса 4.1. ЯР РОКЬМО ( Я(), РОК106 ) СОАЬЕЯСЕ РОК1МО В целом, операция, которая обозначается этим выражением, является примером того, что некоторыми авторами называется хронологической проекцией. А точнее, это "хронологическая проекция" отношения ЯР РОК1МО по атрибутам Я$ и РОК1КО.(Напомним, что в первоначальной версии этого запроса (за»рос А !) использовалась обычная проекция отношения ЯР по атрибуту Я)).) Заметим, что хронологическая проекция — это не совсем проекция как таковая; скорее, это "хронологический аналог" обычной проекции. Теперь перейдем к за»росу 3.2. Исходя из содержимого базы данных, представленного на рис.
22.4, этот запрос можно переформулировать следующим образом. ° За»рос 4.2. Получить пары атрибутов Я(), РОК1КО для тех поставщиков, которые не могут поставить ни одной детали в определенное время, где атрибут РОК1Н6 представляет максимально продолжительный период, в течение которого поставщик Я() фактически не мог поставить ни одной детали. Е При желании операнд А мог бы быть расширен, чтобы можно было задать список имен атрибутов. Аналогичное замечание относится также к оператору "реляционного развертывания" (см. ниже). Именно такая семантика приведена в упр.