- •20.7. Средства sql
- •20.8. Резюме
- •21.1. Введение
- •21.2. Некоторые аспекты технологам поддержки принятия решений
- •21.3. Проектирование базы данных поддержки принятия решений
- •21.5. Хранилища данных и магазины данных
- •21.6. Оперативная аналитическая обработка
- •21.7. Разработка данных
- •21.8. Резюме
- •22.1. Введение
- •22.2. Хронологические данные
- •22.3. Основная проблема хронологических баз данных
- •22.4. Интервалы
- •22.5. Интервальные типы
- •22.6. Скалярные операторы для интервалов
- •22.7. Операторы обобщения для интервалов
- •22.8. Реляционные операторы для обработки интервалов
- •22.9. Ограничения, включающие интервалы
- •22.10. Операторы обновления, включающие интервалы
- •22.11. Проектирование базы данных
- •22.12. Резюме
- •23.1. Введение
- •23.2. Обзор основных концепций
- •23.3. Исчисление высказываний
- •23.4. Исчисление предикатов
- •23.5. Базы данных с точки зрения доказательно-теоретического подхода
- •23.6. Дедуктивные субд
- •23.7. Обработка рекурсивных запросов
- •23.8. Резюме
- •Часть VI
- •24.1. Введение
- •24.2. Объекты, классы, методы и сообщения
- •24.3. Еще раз об объектах и объектных классах
- •Cdo для класса set (ref(emp))
- •24.4. Простой пример
- •1 | Course с001 , с001 0ffs , с001 ny offs |
- •24.5. Дополнительные аспекты
- •24.6. Резюме
- •25.1. Введение
- •X2 rational, y2 rational ) ... ;
- •25.2. Первая грубейшая ошибка
- •25.3. Вторая грубейшая ошибка
- •25.4. Вопросы реализации
- •25.5. Преимущества реального сближения двух технологий
- •25.6. Резюме
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
{ [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— это не совсем то, что нам нужно. Они представляют лишь этап на пути к нашей цели. Нам необходимы некоторые реляционные аналоги данных операторов, поэтому в следующем разделе будут даны определения таких аналогов.