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

23.1. Введение

В середине 80-х годов в области исследования баз данных сформировалось мощное направление, предметом изучения которого стали системы управления базами дан­ных, основанные на логике. В научной литературе по этой тематике довольно часто встречаются такие выражения, как логическая база данных, экспертная СУБД, дедук­тивная СУБД, база знаний, система управления базой знаний, логика как модель данных, выполнение рекурсивных запросов и т.д. Однако смысл этих терминов не всегда прозра­чен, т.е. их употребление в том или ином контексте не всегда легко связать с привычной терминологией, что усложняет понимание идей с точки зрения традиционного подхода к исследованию баз данных. Вот почему необходимо разъяснить эти представления на ос­нове обычных идей и принципов построения баз данных.

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

Структура этой главы такова. После краткого введения следует раздел 23.2 с неболь­шим обзором обсуждаемой темы и основных предпосылок ее возникновения. Затем в раз­делах 23.3 и 23.4 приводится элементарное и весьма упрощенное описание исчисления вы­сказываний (вычислений на основе логических утверждений) и исчисления предикатов. После этого в разделе 23.5 представлен так называемый доказательно-теоретический подход, а в разделе 23.6 описывается дедуктивная СУБД. Далее в разделе 23.7 рассматри­ваются некоторые подходы к проблеме выполнения рекурсивных запросов, и наконец в раз­деле 23.8 предлагаются резюме и несколько заключительных замечаний.

23.2. Обзор основных концепций

Исследования связей между базами данных и логикой начались еще в конце 70-х го­дов, и о них можно прочесть в работах [23.5], [23.7] и [23.13]. Однако интерес к этой те­ме значительно возрос после публикации в 1984 году работы Рейтера (Reiter) [23.15]. В ней традиционное представление баз данных характеризуется как модельно-теорети-ческое. Проще говоря, это означает следующее.

  1. База данных в любой момент может рассматриваться как набор явно заданных (т.е. базовых) отношений, каждое из которых включает набор явно заданных кортежей.

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

Замечание. Более точное определение термина "модельно-теоретический" будет дано в разделе 23.5.

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

  1. База данных рассматривается как набор аксиом ("основных" аксиом, соответст­вующих значениям домена и кортежам базовых отношений, а также определенных "дедуктивных" аксиом, которые более подробно описаны ниже).

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

Замечание. Более точное определение термина "доказательно-теоретический" будет дано в разделе 23.5, хотя можно сразу отметить, что доказательно-теоретическое пред­ставление очень близко к описанию базы данных как набора истинных высказываний, которое приводилось в разделе 1.3 главы 1 (см. также [1.2]).

Теперь полезно будет привести какой-нибудь конкретный пример. Рассмотрим сле­дующий сформулированный в реляционном исчислении запрос к рассматриваемой ранее базе данных поставщиков и деталей.

SPX WHERE SPX.QTY > 250

(Здесь SPX — это, конечно, переменная кортежа, принимающая значения из отноше­ния поставок.) В традиционной, т.е. модельно-теоретической, интерпретации необходи­мо последовательно проверить все кортежи с данными о поставках и оценить для каждо­го из них результат вычисления формулы QTY > 250. При выполнении этого запроса бу­дут извлечены все кортежи с описанием поставок, для которых данное выражение будет истинным. В противоположность этому при доказательно-теоретической интерпретации кортежи с описанием поставок (а также некоторые дополнительные объекты) рассматри­ваются как аксиомы некой логической теории. Затем при обработке запроса применя­ется доказательно-теоретический метод с целью выяснения, для каких возможных значе­ний переменной SPX формула SPX.QTY>250 является логическим следствием аксиом этой теории. Результатом выполнения запроса будут отдельные значения переменной-отношения SPX.

Конечно, приведенный выше пример настолько прост, что с его помощью трудно об­наружить существенные различия между двумя этими интерпретациями. Однако дело в том, что ход рассуждений, лежащих в основе этого доказательства (в доказательно-теоретической интерпретации), конечно же, гораздо сложнее, чем можно было бы про­демонстрировать с помощью данного примера. Как будет показано ниже, такой ход рас­суждений помогает справиться с проблемами, которые невозможно решить с помощью классических реляционных систем. Более того, доказательно-теоретический подход обладает целым рядом дополнительных преимуществ, перечисленных ниже [23.15].

  • Единство представления. Появляется возможность задать единый язык для всей базы данных, согласно которому доменные значения, кортежи базовых отношений, "дедуктивные аксиомы", запросы и ограничения целостности будут представлены одинаковым образом.

  • Единство действия. Предоставляется единая основа для решения различных за­дач, включая оптимизацию запросов (особенно — семантическую оптимизацию), обеспечение ограничений целостности, проектирование базы данных (теория за­висимостей), доказательство корректности программ и др.

  • Семантическое моделирование. Появляется твердая основа для построения множества "семантических" расширений основной модели.

  • Расширенное применение. Наконец, обеспечивается основа для решения таких проблем, с которыми не могут справиться системы на основе классических подхо­дов, например для работы с дизъюнктивной информацией наподобие "Поставщик с номером 'S5' поставляет либо деталь с номером 'Р1', либо деталь с номером ' Р2', но какую именно, точно неизвестно".

Дедуктивные аксиомы

MOTHER OF

В этом подразделе объясняется уже упоминавшееся понятие дедуктивной аксиомы, которое также называется правилом вывода (или правилом заключения). По своей сути дедуктивная аксиома— это правило, следуя которому на основе определенных фактов можно вывести новые факты. Например, на основе фактов "Anne is the mother of Betty" ("Анна — мать Бетти") и "Betty is the mother of Celia" ("Бетти — мать Селии") со­гласно очевидной дедуктивной аксиоме можно вывести, что "Anne is the grandmother of Celia" ("Анна— бабушка Селии"). Забегая наперед, можно представить дедуктивную СУБД, в которой два данных факта оформлены в виде кортежей отношения M0THER_0F с атрибутами MOTHER (мать) и DAUGHTER (дочь).

MOTHER

DAUGHTER

Anne Betty

Betty Celia

Эти два факта будут основными аксиомами для системы. Предположим также, что дедуктивная аксиома формально определена в СУБД с использованием следующего ги­потетического упрощенного синтаксиса.

IF M0THER_0F { х, у )

AND M0THER_0F ( у, z )

THEN GRANDM0THER_0F ( X, Z ) ;

Теперь это правило, выраженное в форме дедуктивной аксиомы, можно применить к данным, выраженным в форме основных аксиом (конкретные способы такого при­менения будут обсуждаться в разделе 23.4). Это позволит получить результат GRANDM0THER_0F(Anne, Celia). Таким образом, пользователи СУБД смогут создавать запросы наподобие "Кто является бабушкой Селии?" и "Кто является внучкой Анны?" (точнее будет спросить "Чьей бабушкой является Анна?").

Сравним описанные идеи с традиционными концепциями баз данных. Согласно тра­диционной терминологии дедуктивная аксиома может быть задана на основе приведен­ного ниже определения представления.

VAR GRANDMOTHERJDF VIEW

j MX.MOTHER AS GRANDMOTHER, MY.DAUGHTER AS GRANDDAUGHTER) WHERE MX.DAUGHTER = MY.MOTHER ;

Здесь умышленно используется стиль реляционного исчисления. MX и MY — перемен­ные кортежа, которые изменяются на переменной-отношении MOTHER OF. Запросы такого типа могут быть оформлены на основе следующего представления.

GX.GRANDMOTHER WHERE GX.GRANDDAUGHTER = NAME ( 'Celia' ) GX.GRANDDAUGHTER WHERE GX.GRANDMOTHER = NAME ( 'Anne' )

Здесь GX— переменная кортежа, изменяющаяся на переменной-отношении GRANDM0THER_0F.

Таким образом, на основе другого синтаксиса и другой интерпретации был представ­лен материал, который в основном уже знаком читателю. Однако в последующих разде­лах на нескольких более сложных примерах будет показано, что на самом деле различия между логическими системами и традиционными СУБД гораздо существеннее.

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