|
Программирование >> Хронологические базы данных
операторов получите свернутое отношение, в котором каждое значение статуса, когда-либо являвшееся значением smax, будет связано с интервалом времени, когда оно имело значение smax. 22.7. Дано отношение HW с атрибутами NAME, HEIGHT и WEIGHT, представляюшими имя, рост и вес некоторого человека. Напишите запрос, который для каждого записанного значения веса покажет все диапазоны значений роста, таких, что для каждого значения роста в этом диапазоне сушествует по крайней мере один человек с данным ростом и весом. 22.8. Рассмотрим отношение R с двумя различными интервальными атрибутами Ii и 12. Докажите или опровергните следующие утверждения. а) (R UNFOLD Ii) UNFOLD 12 = (R UNFOLD 12) UNFOLD Ii б) (R COALESCE Ii) COALESCE 12 = (R COALESCE 12) COALESCE Ii 22.9. Можете ли вы привести пример переменной-отношения с интервальным атрибутом, которую было бы нежелательно поддерживать в свернутой форме? 22.10.Исследуйте возможности расширения понятия хронологического внешнего ключа для включения ссылочных действий, таких как каскадное удаление. Список литературы Вместо того чтобы приводить здесь список работ, который может оказаться слишком объемным, мы просто обратим ваше внимание на то, что в [22.2] содержится обширный список литературы по теме данной главы. 22.1. Allen J.F. Maintaining Knowledge about Temporal Intervals CACM. - November, 1983. - 16, № 11. 22.2. Etzion O., Jajodia S., Sripada S. (eds.) Temporal Databases: Reaserch and Practice. - New York, N.Y.: Springer Verlag, 1998. Антология, представляющая состояние исследований данной темы на 1997 год, а также превосходная первая работа для дальнейшего изучения. Четвертая часть. Part 4: General Reference, включает обширную библиофафию и версию словаря терминов. The Consensus Glossary of Temporal Database Concepts, no состоянию на февраль 1998 года. Вторая часть. Part 2: Temporal Query Languages, включает статью Valid Time and Transaction Time Proposals: Language Design Aspects , в которой автор оригинального текста настоящей главы Хью Дарвен (Hugh Darwen) приводит доводы против подхода, принимающего язык TSQL2, и настаивает на том, что в определениях языка TSQL2 [22.4] имеются существенные недостатки. Также во вторую часть входит статья Дэвида Томэна (David Toman) Point-Based Temporal Extensions of SQL and Their Efficient Implementation , в которой предлагается расширение языка SQL, основанное на точках, а не интервалах. Эта идея поднимает некоторые интересные вопросы, касающиеся реализации. Ответы на них могли быть применимы и для подхода, основанного на интервалах, поскольку единичные интервалы , которые получаются в развернутой форме (UNFOLD), фактически представляют точки (на самом деле они действительно являются точками в языке IXSQL; см. аннотацию к [22.3]). 22.3. Lorentzos N.A., Mitsopoulos Y.G. SQL Extension for Interval Data IEEE Transactions on Knowledge and Data Engineering. - May/June, 1997. - 9, № 3. Многие идеи, которые обсуждались в настоящей главе, основаны на результатах исследований, описанных в данной статье. Как и предыдущая работа, эта статья содержит множество полезных ссылок. Прежде чем представить собственное расширение языка SQL, авторы определили реляционную алгебру, дополненную интервалами (Interval-Extended Relational Algebra). Предлагаемое расширение языка SQL называется IXSQL (иногда произносят, как девять SQL ) и не предназначено исключительно для хронологических интервалов. Поскольку ключевые слова INTERVAL и COALESCE уже используются в языке SQL для других целей, авторы предлагают вместо них ключевые слова PERIOD (даже для не хронологических интервалов) и NORMALISE (обратите внимание на написание). Как указывалось в аннотации к [22.2], оператор UNFOLD в языке IXSQL отличается от нашего тем, что в результате его выполнения получаются точки, а не единичные интервалы. Поэтому авторы предлагают обратный оператор FOLD, который преобразует точки в интервалы, а затем свертывает их. Эти операторы предлагаются не как отдельные операторы, а как дополнительные предложения обычной конструкции SELECT-FROM-WHERE. Интересно, что вновь введенное предложение NORMALISE ON не только записывается последним, но и выполняется последним (что является отклонением от правил языка SQL; см. приложение Б). Иными словами, вывод предложения SELECT является вводом для предложения NORMALISE ON (по веским причинам). 22.4. Snodgrass R.T. The Temporal Query Language TASQL2. - Dortrecht, Netherlands: Kluwer Academic Pub., 1995. Язык TSQL2 - это множество предложенных расширений для языка SQL. Комитет языка TSQL2 в значительной степени отверг общий подход к использованию скалярных и реляционных операторов для интервалов в пользу того, что больше подходит в особых случаях. Вместо простой поддержки генератора интервального типа и связанных с ним операторов были предложены различные специального вида таблицы: таблицы снимков, таблицы допустимого времени состояния, таблицы допустимого времени события, таблицы времени транзакций, таблицы двухронологического состояния и таблицы двухроно-логических событий. Таблица снимков - это таблица в обычном стиле языка SQL, возможно, включающая столбцы данных типа PERIOD (как и в языке IXSQL [22.3], это ключевое слово используется вместо ключевого слова INTERVAL, которое уже употребляется в языке SQL для других целей). Все остальные виды таблиц имеют хронологическую поддержку. Хронологическая поддержка означает существование для каждой строки одного или двух хронологических элементов. Хронологический элемент- это множество временных отметок, причем каждая временная отметка представляет собой или значение типа PERIOD, или значение некоторого типа даты-времени. (Обратите внимание, что термин временная отметка здесь используется не в его привычном, принятом в языке SQL/92 смысле.) Хронологические элементы, содержащие значения типа PERIOD, определяются как свер-нутые . Хронологические элементы не выступают в роли обычных столбцов; вместо этого доступ к ним осуществляется с помощью операторов специального назначения. Ниже приведен краткий обзор различного вида таблиц с хронологической поддержкой . В таблицах допустимого времени состояния и таблицах времени транзакций каждая временная отметка - это значение типа PERIOD. В таблицах допустимого времени события каждая временная отметка- это значение некоторого типа даты-времени. Двухронологическая таблица представляет собой одновременно таблицу времени транзакций и либо таблицу допустимого времени состояния, либо таблицу допустимого времени события. Каждая строка в двухронологической таблице имеет два хронологических элемента: один- ддя времени транзакции, другой- ддя допустимого времени. Поэтому двухронологическая таблица может обрабатываться как таблица времени транзакций или как таблица допустимого времени. В языке TSQL2 строго соблюдается так называемая хронологическая прямая совместимость. Ее суть заключается в том, чтобы можно было добавить хронологическую поддержку к существующей базовой таблице путем преобразования базовой таблицы из таблицы снимка в некоторого вида хронологическую таблицу. С этого момента все обычные SQL-операции над такой базовой таблицей интерпретируются как операции над текущей версией моментального снимка этой таблицы, но теперь они могут иметь новый побочный эффект. В частности, операции обновления и удаления для текущей версии моментального снимка сохраняют старые версии строк как строк с хронологическими элементами. Выбранный в языке TSQL2 подход приобретает большое преимущество благодаря так называемым последовательным операциям. Последовательная операция выражается как операция над моментальным снимком базы данных (обычно - над текущим снимком), но выполняется так, как если бы это был каждый моментальный снимок. Результат выполнения последовательного запроса для таблиц допустимого времени, например, является таблицей допустимого времени. Сам запрос выражается так, как будто это запрос текущего снимка базы данных с добавлением отдельного ключевого слова, чтобы можно было указать, что это последовательный запрос. В прикладных программах, в которых выдаются такие запросы, должно быть создано специальное обеспечение для доступа к временной отметке в результирующих строках. Версия языка TSQL2, которая была предложена организацией ISO (но не была принята) для включения в стандарт в 1996 году, отличается от версии, описанной в [22.4], где таблицы с хронологической поддержкой всегда были не вложенными (т.е. каждый элемент представлял собой отдельную временную опшетку, а не множество отметок). Также не указывалось, свернута таблица или нет. На самом деле есть другое отличие между языком TS0L2, как он определен в [22.4], и версией, предложенной ISO. В [22.4] требуется ключевое слово SNAPSHOT после слова SELECT, означающее, что некоторый запрос зависит от текущего состояния каждой из таблиц, на которые он ссылается. В версии, предлагаемой ISO, это не требуется.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |