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

22.2. Хронологические данные

Если обычные данные являются закодированным представлением фактов, то хроно­логические данные являются закодированным представлением фактов с отметкой точно­го времени, или временной отметкой (timestamp). В хронологических базах данных в соответствии с крайней интерпретацией этого термина все данные являются хронологи­ческими, а значит, каждый записанный факт сопровождается временной отметкой. Та­ким образом, хронологическое отношение — это такое отношение, в котором содержит­ся по крайней мере одна временная отметка, т.е. заголовок включает хотя бы один атри­бут некоторого типа, представляющего собой временную отметку. Отсюда следует, что хронологическая переменная-отношение является такой переменной-отношением, заго­ловок которой представлен хронологическим отношением. В свою очередь, реляционная хронологическая база данных — это база данных, в которой все переменные-отношения являются хронологическими.

Замечание. Мы здесь умышленно не уточняем, как могут выглядеть данные "некоторого типа, представляющего собой временную отметку". Этот вопрос будет рас­смотрен в разделах 22.3-22.5.

Итак, выше было дано достаточно точное определение понятия "хронологическая ба­за данных" (в ее чересчур строгом понимании). Однако такое понятие здесь использо­ваться не будет, поскольку от него мало проку! Оно отвергается потому, что даже если бы все исходные переменные-отношения в базе данных были хронологическими, то мно­гие производные отношения (например, результаты выполнения запроса) все же не явля­лись бы хронологическими. Например, ответ на запрос "Найти фамилии всех служащих, которые были приняты на работу в течение некоторого периода времени" вполне может быть получен из некоторой хронологической базы данных, однако сам ответ не будет представлять собой хронологическое отношение. Это была бы действительно странная СУБД, и уж точно не реляционная, если бы она позволяла получать результаты, которые не смогла бы сохранить в собственной базе данных.

Поэтому в настоящей главе будем считать, что хронологические базы данных — это такие базы данных, которые могут включать хронологические данные, но содержание которых не ограничивается лишь хронологическими данными. В настоящей главе под­робно обсуждаются именно такие базы данных.

  • Далее в этом и следующем разделах содержится вступительный материал для по­следующих разделов. В частности, в разделе 22.3 показано, почему хронологиче­ские данные, как оказывается, требуют специальной трактовки.

  • В разделах 22.4 и 22.5 вводится понятие интервалы (промежутки времени) как удобный способ добавления к данным временных отметок. Затем в разделах 22.6 и 22.7 обсуждается несколько скалярных и обобщающих операторов, предназначен­ных для обработки интервалов.

  • В разделе 22.8 вводятся некоторые новые важные реляционные операторы для об­работки хронологических отношений.

  • В разделе 22.9 рассматриваются вопросы, касающиеся ограничений целостности для хронологических данных, а в разделе 22.10— специальные проблемы обнов­ления таких данных.

  • Наконец, в разделе 22.11 предлагаются некоторые важные (и, возможно, непри­вычные) идеи проектирования баз данных и в разделе 22.12 представлено резюме.

Замечание. Важно понимать, что, кроме одного исключения (генератора интерваль­ного типа, представленного в разделе 22.5), все новые операторы и другие конструкции, обсуждаемые в этой главе, в действительности являются лишь сокращениями. Другими словами, они могут быть выражены (хотя иногда и очень громоздко) с помощью тех функциональных возможностей, которые уже имеются в полном реляционном языке, та­ком как Tutorial D. Это утверждение будет подкрепляться по мере необходимости при­мерами (хотя и не во всех случаях).

Некоторые основные концепции и вопросы

Рассмотрим, как в обычном языке выражаются так называемые "высказывания с вре­менной отметкой". Приведем три примера.

  1. С поставщиком с номером 'S1' был заключен договор (т.е. подписан контракт) от 1 июля 1999 года.

  1. Договор с поставщиком с номером 'S1' действителен с 1 июля 1999 года.

  1. Договор о поставках с поставщиком с номером 'S1' имеет силу на период с 1 июля 1999 года и по настоящий день.

Каждое из этих высказываний представляет собой возможную интерпретацию корте­жа с двумя атрибутами: номером поставщика со значением 'S1' и временной отметкой ' 1 июля 1999 года'. Причем каждое из этих высказываний может соответствовать кор­тежу, который содержится в базе данных типа моментального снимка, представляющей текущее состояние некоторого предприятия. Выделенные слова от, с и на период харак­теризуют эти различные интерпретации.

Замечание. Везде в этой главе слова "с" и "на период" будут использоваться исклю­чительно в смысле "с тех пор" и "в течение всего времени" (рассматриваемого периода) соответственно, если противное не будет указано явно.

Хотя здесь приведены три возможные интерпретации, можно возразить, что во всех этих высказываниях в действительности говорится об одном и том же, но с использованием различных выражений. На самом деле высказывания 2 и 3 счита­ются равносильными, а высказывания 1 и 2 (или 1 и 3) — нет. Покажем, что это действительно так.

■ В высказывании 1, безусловно, утверждается, что с поставщиком с номером 'S1' договор о поставках не был заключен до определенной даты (30 июня 1999 года), которая непосредственно предшествует указанной дате подписания контракта. В высказывании 2 этот факт не утверждается и из него никак не следует.

■ Предположим, что сегодня ("текущий день") 25 сентября 2000 года. Тогда в вы­сказывании 2, безусловно, утверждается, что заключенный с поставщиком с номе­ром 'S1' договор был действителен каждый день, начиная с 1 июля 1999 года и по 25 сентября 2000 года включительно. Однако в высказывании 1 этот факт не ут­верждается и не подразумевается.

Таким образом, высказывания 1 и 2 не равносильны и не следуют одно из другого.

Кортежи в базах данных типа моментального снимка часто включают элементы со значением "указанная дата". В этом случае в качестве подразумеваемой интерпретации чаще всего понимаются высказывания, подобные высказыванию 2 (или 3). В рассмот­ренном выше примере высказывание 1 в той форме, в которой оно представлено, являет­ся не совсем точной интерпретацией заданного кортежа. Точнее, его следовало бы сфор­мулировать так: "Договор с поставщиком с номером 'S1' был заключен не раннее 1 июля 1999 года". Более того, если эта версия высказывания 1 действительно соответст­вует тому, что подразумевается под данным гипотетическим кортежем с двумя атрибу­тами, то высказывание 2 в его приведенной форме также представляет собой не совсем точную интерпретацию. Корректнее было бы сформулировать его так: "Договор с по­ставщиком с номером 'S1' не был заключен до 30 июня 1999 года, но 1 июля 1999 года он действительно был заключен".

Обратите внимание, что высказывание 1 отражает момент, в который имело место определенное событие, в то время как высказывания 2 и 3 отражают интервал времени, на период которого сохраняется определенное состояние. Здесь умышленно был вы­бран пример, в котором об определенном состоянии можно судить исходя из информа­ции, касающейся определенного события. Поскольку договор с поставщиком с номером 'S1' был заключен не раньше 1 июля 1999 года, договорные отношения с этим постав­щиком существуют начиная с этой даты и по настоящее время. В классической техноло­гии баз данных вполне удовлетворительно обрабатываются экземпляры времени (время, когда произошло событие), однако совсем плохо обрабатываются интервалы времени, т.е. периоды времени, в течение которого сохраняется определенное состояние (это бу­дет показано в разделе 22.3).

Обратите также внимание, что хотя высказывания 2 и 3 логически равносильны, их формы заметно отличаются. Точнее, форма высказывания 2 не может использоваться для хранения исторических сведений, в то время как форма высказывания 3 это позволя­ет, если только заменить в нем фразу "по настоящий день" какой-либо явной датой, на­пример 25 сентября 2000 года. (Конечно, тогда высказывание будет соответствовать кор­тежу с тремя атрибутами, а не с двумя.) Таким образом, можно сделать вывод, что поня­тие "на период" является очень важным для ведения исторических записей, по крайней мере для данных о состояниях, если не для данных о состоянии2.

2 Здесь не лишне было бы заметить, что несмотря на повторяющееся использование таких терминов, как "исторические записи", в хронологических базах данных могут также содер­жаться данные, относящиеся к будущему времени. Например, может возникнуть необходи­мость зафиксировать тот факт, что с поставщиком с номером 'S1' будет заключен договор на период времени от а до Ь, где обе даты — будущие даты

Терминология.Время, когда произошло определенное событие, или интервал време­ни, когда сохраняется определенное состояние, иногда называют допустимым временем. Точнее говоря, допустимое время высказывания р — это множество моментов времени, когда данному высказыванию доверяют как истинному. Это время отличается от време­ни транзакции, которое является множеством моментов времени, когда данное выска­зывание действительно было представлено в базе данных как истинное. Допустимое время может быть обновлено для отображения изменения доверия к высказыванию, а время транзакции — не может. Время транзакции полностью управляется системой, и ни один пользователь не может его изменить (обычно это время явно или неявно записыва­ется в журнал транзакций).

Замечание. В предыдущем абзаце упоминались интервалы и множества моментов времени, которые неявно представляют хотя и простую, но важную идею, а именно — что интервал с начальным временем s и конечным временем е фактически означает множество таких моментов t, что s < t < е (где "<" означает, конечно, "раньше чем"). Хотя это простое понятие вполне "очевидно", оно имеет далеко идущие последствия, в чем мы убедимся в последующих разделах.

Большая часть предыдущего обсуждения умышленно была построена так, чтобы у читателя возникли определенные вопросы. Независимо от того, достигнута ли данная цель, перечислим эти вопросы и попытаемся на них ответить.

1. Определяют ли такие выражения, как "множество моментов t, такое, что s < t < е", бесконечные множества элементов, вызывающие, как и другие бесконеч- ные множества, некоторые концептуальные и вычислительные трудности, харак- терные для работы с ними?

Ответ. Да, сказанное выше имеет место. Но все эти трудности можно обойти, если предположить, что "шкала времени" содержит конечную последователь­ность дискретных неделимых квантов времени (долей времени). В этом случае интервал с начальным временем s и конечным временем е содержит заведомо конечное число таких квантов.

Замечание. Во многих работах квант времени называется хрононом. Однако при этом сам хронон определяется как интервал (см., например, словарь тер­минов в [22.2]) и подразумевается, что он имеет начальную и конечную точки (возможно, еще точки между ними) и, следовательно, не является неделимым. (Что конкретно представляют собой эти точки? Чем еще они могут быть, кроме хрононов?) Мы считаем, что здесь есть противоречие, и поэтому будем избе­гать данного термина.

2. В высказываниях 1-3, вероятно, подразумевается, что кванты времени— это дни, но система, безусловно, поддерживает отсчет времени с точностью до долей секун- ды. Если с поставщиком с номером 'S1' договор был заключен 1 июля 1999 года, а не 30 июня 1999 года, то что можно сказать о периоде от начала суток 1 июля до момента подписания договора с поставщиком с номером 'S1'?

Ответ. Необходимо четко различать кванты времени как таковые, являющиеся самыми малыми единицами времени, которые могут быть представлены в систе­ме, и единицы времени, используемые для конкретного применения, например год, состоящий из месяцев, каждый из которых, в свою очередь, состоит из дней или недель, и т.д. Подобные единицы мы будем называть моментами времени, или, для краткости, просто моментами, подчеркивая тем самым, что для наших целей они также рассматриваются как неделимые. Тогда неформально можно сказать, что моменты времени являются "отрезками шкалы времени" (т.е. мно­жеством квантов времени), которые продолжаются от границы одного кванта до границы следующего, например от полуночи одного дня до полуночи следующе­го дня. Поэтому можно сказать, опять-таки неформально, что моменты времени имеют продолжительность (в нашем примере это один день). Однако формально моменты времени, повторяем, неделимы и понятие протяженности для них ни коим образом не применяется.

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

3. Если шкала времени по существу представляет собой последовательность момен- тов времени (с некоторой зернистостью), то можно, не вызывая какой-либо дву- смысленности, обращаться к "непосредственно следующему времени" (или пред- шествующему) для какого-либо момента времени. Верно ли это?

Ответ. Да, но лишь до определенных моментов времени. Этими моментами, без­условно, являются конец и начало шкалы времени при движении по ней в прямом и обратном направлениях соответственно. Начало шкалы времени — это момент времени, который не имеет предшествующего момента (возможно, он соответству­ет вычисленному астрономами моменту предполагаемого "большого взрыва" в теории происхождения Вселенной). Конец шкалы времени — это момент времени, за которым пока нет последующего момента.

4. Если некоторое отношение включает кортеж из трех атрибутов, представляющий тот факт, что договор с поставщиком с номером 'S1' был подписан 1 июля

3 На наш взгляд, заблуждение, при котором хрононы и гранулы рассматриваются в качестве интервалов, возникает из-за того, что имеет место путаница между интуитивным и формаль­ным. Интуитивное понимание каких-либо материальных процессов — это одно дело, а их фор­мальная модель — совсем другое. В частности, можно считать график времени непрерывным и бесконечным, однако в нашей модели (в том числе по соображениям, которые связаны с воз­можностями проведения вычислений) он полагается дискретным и конечным.

Замечание. В дополнение к обсуждаемой теме следует сказать, что хотя концепция кванта време­ни (или хронона) весьма полезна как основа для описания формальной модели на интуитивном уровне, сама по себе она вовсе не является частью этой модели и не имеет для нее какого-либо значения


  1. года и будет действителен по 25 сентября 2000 года, то не требует ли допуще­ние о замкнутости мира (см. главу 5), чтобы то же самое отношение включало и аналогичный кортеж, представляющий, например, тот факт, что договор с постав­щиком с номером 'S1' был действителен также со 2 июля 1999 года по 24 сентября

  2. года, и множество других кортежей, представляющих прочие тривиальные следствия исходного кортежа?

Ответ. Интересный вопрос! Очевидно, что необходим более ограничивающий предикат по сравнению с общей интерпретацией данного кортежа с тремя атрибу­тами, а именно: "С поставщиком с номером ' Sx' был подписан договор, действи­тельный каждый день с даты s по дату е, но не в день, непосредственно предшест­вующий s, и не в день, непосредственно следующий за е"4. Эта более ограничи­вающая интерпретация в общем виде предоставляет мотивировку и основу для многих операторов, которые будут описаны в этой главе, в частности в разде­лах 22.8 и 22.10.

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