Классика баз данных - статьи

       

Поиск


В операции поиска требуется указать следующую информацию:

  • что требуется найти - объект или наблюдение
  • используется ли полное состояние или только наблюдения указанного типа
  • интервал времени, за который рассматриваются состояния или текущее состояние
  • условие поиска

    Если интервал времени не указывается, то считается, что рассматривается текущее состояние объекта. Если же интервал задается, то в условии требуется дополнительно уточнить, когда оно выполняется. Возможны следующие варианты:

  • условие выполняется во всех состояниях на указанном интервале времени
  • условие выполняется хотя бы в одном состоянии
  • условие не выполняется ни в одном состоянии

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

    Возможны более сложные условия поиска. Если A и B - логические выражения, то можно задавать причинно-следственные связи, например, "Если A, то B до или после A"

    Помимо этого, возможно указывать временной интервал непосредственно вместе с каждым простым условием: (A в интервале T1) И (B в интервале T2).

    В качестве примера рассмотрим, как мог бы выглядеть запрос на гипотетическом языке манипулирования данными для рассматриваемой модели.

    select object о using observations of type General_Info, Visit_To_Phisician on time interval [01.01.2000..01.01.2001] where (о.age > 35 (year)) and (о.age<72 (year)) and (о.gender = femal) and never ( о.systolic_blood_pressure > 130 (mm Hg)) // эквивалентно always not (<condition>) and at least once ( о.wheight / (о.height*о.height) > 30 (Kg/m^2))

    Приведенная запись соответствует запросу "Найти всех женщин в возрасте на момент обследования от 35 до 72 лет, обследованных за 2000 год, у которых систолическое артериальное давление за этот период никогда не превышало 130 мм рт.ст. и хотя бы один раз зафиксирован избыточный вес (индекс массы тела >30)"

    Предполагается, что в проекте описаны типы наблюдения General_Info, в котором регистрируется параметр gender - пол пациента, и Visit_To_Phisician, где фиксируются остальные параметры, участвующие в приведенном запросе. Фраза using указывает на то, что условие будет проверяться только для тех объектов, для которых проведено хотя бы по одному наблюдению этих типов. В данном примере также следует обратить внимание, что за значениями в скобках указывается последовательность символов, определяющая размерность значения - при написании запроса пользователю достаточно знать только размерность и нет необходимости помнить в каких именно единицах измеряется данный параметр.

    Условия поиска с учетом временных связей между событиями заслуживают более пристального внимания. В частности можно рассмотреть возможность использования диалекта SQL/Temporal или построения специфического языка запросов на основе темпоральной логики [4]. Однако детальная разработка языка не входит в число задач данной работы.



    Содержание раздела