База данных шахматных окончаний
- 1 year ago
- 0
- 0
Хронологическая база данных — база данных , содержащая исторические (хронологические) данные, то есть данные, относящиеся к прошлым и, возможно, к будущим периодам времени. Обычная, нехронологическая база данных содержит только текущие данные.
Хронологические данные представляют собой истинные высказывания с указанием интервалов времени. Интервалом времени является непустой отрезок временной шкалы, для его обозначения используется специальный интервальный тип данных INTERVAL_DATE. Значения этого типа записываются в виде , где — выражения типа DATE, соответствующие начальной и конечной временной позиции интервала. Под временными позициями (позициями на временной шкале) понимают единицы времени, подходящие для определённой цели (миллисекунды, секунды, сутки) и считающиеся неделимыми.
Допустим — значения интервального типа, имеющие соответственно начальные позиции и конечные позиции , — произвольная временная позиция. Для обозначения предшествующей и последующей временной позиции используются выражения вида и . Оператор возвращает количество различных позиций таких, что . Интервал является единичным интервалом, если .
Для проверки условий, связанных с интервалами, используются операторы Аллена:
Кроме того, имеются бинарные операторы над интервалами, которые возвращают интервалы:
Операторы EXPAND и COLLAPSE принимают в качестве операнда унарное отношение , кортежи которого содержат интервалы и возвращают отношение того же типа, являющееся соответственно развёрнутой и сжатой формой исходного отношения.
Пример использования операторов EXPAND и COLLAPSE:
|
|
|
Развёрнутой формой отношения R является отношение Rx, содержащее все кортежи с единичным интервалом [p: p], где p — позиция в некотором интервале некоторого кортежа отношения R. Сжатой формой отношения R является такое отношение Rc, что: отношения R и Rc имеют одну и ту же развёрнутую форму; никакие два разных кортежа в отношении Rc не содержат интервалы i1 и i2 такие, что i1 MERGES i2 является истиной.
Оператор PACK и UNPACK принимают в качестве операндов отношение и атрибут интервального типа, принадлежащий этому отношению, и возвращает отношение того же типа, соответственно свёрнутое по указанному атрибуту с группировкой по остальным атрибутам, и развёрнутое по указанному атрибуту.
Пример использования операторов PACK и UNPACK:
|
|
|
Упаковать отношение R по нескольким атрибутам D1, D2, …, Dn можно распаковав R по всем указанным атрибутам, а затем упаковать полученный результат по атрибуту D1, результат упаковки упаковать по атрибуту D2, …, результат упаковки упаковать по атрибуту Dn.
Для всех обычных реляционных операторов определены аналогичные им U_операторы, которые распаковывают отношение по указанным атрибутам, выполняют соответствующую операцию и упаковывают полученный результат. Например, операторы U_MINUS, U_INTERSECT, U_UNION, U_JOIN соответствуют операторам MINUS, INTERSECT, UNION, JOIN. U_OPERATOR определяется как:
Операция распаковки при использовании длинных интервалов с большой степенью детализации может потребовать слишком большого объёма памяти для своего выполнения. Использование U_операторов позволяет оптимизатору выбрать реализацию, которая требует минимального количества промежуточных результатов.
Пример использования оператора U_MINUS:
|
|
|
Хранение текущей информации в одних переменных отношения, а исторической информации — в других называется горизонтальной декомпозицией. Хранение исторической информации в виде множества отдельных переменных отношения (каждая из которых содержит один атрибут интервального типа и один атрибут другого типа) называется вертикальной декомпозицией.
Предположим, переменная отношения R имеет атрибут интервального типа D и атрибуты других типов A1, A2, …, An. При изменении атрибутов A1, A2, …, An независимо друг от друга во времени в переменную отношения необходимо вносить сложный ряд обновлений, для представления информации о значении атрибута в течение определённого интервала времени может потребоваться более одного кортежа. Поэтому целесообразно распределить информацию по переменным отношения R1, R2, …, Rn, которые будут иметь атрибуты D и A1, D и A2, …, D и An соответственно.
|
|
|
Данное отношение после выполнения декомпозиции находится в шестой нормальной форме .
Вхождение атрибута D интервального типа в состав потенциального ключа не решает проблему избыточности и противоречия. Отношение может иметь два кортежа с перекрывающимися интервалами и совпадающими значениями остальных атрибутов. При этом имеется избыточность информации , данные за некоторые временные интервалы, указываются дважды. Кроме того, существует проблема многословия, когда два кортежа имеют интервалы следующие непосредственно друг за другом при совпадающих значениях остальных атрибутов. В этом случае, хотя информация и не дублируется, но её можно представить в виде одного кортежа. Для устранения проблемы избыточности и многословия необходимо, чтобы переменная отношения постоянно была упакована по атрибуту D.
Кроме того, отношение может содержать два кортежа с перекрывающимися интервалами, но с различными значениями других неключевых атрибутов, в результате чего информация будет противоречивой. Для устранения противоречия необходимо, чтобы переменная отношения была постоянно распакована по атрибуту D.
Для удовлетворения этих требований вводятся U_ключи. Переменная отношения поддерживается упакованной по U_ключу и распаковывается при внесении изменений для поддержания непротиворечивого состояния.