Программирование >>  Хронологические базы данных 

1 ... 219 220 221 [ 222 ] 223 224 225 ... 348


неопределенных значений: одно из них - значение неизвестно , а второе - значение неприменимо . В результате в предложенной Коддом реляционной модели используется уже не трех-, а четырехзначная логика. Автор данной книги возражает против подобных предложений в этой и во всех других своих работах (например, в [18.5]). В данной главе мы сосредоточимся только на одном виде неопределенных значений, а именно- на значение неизвестно . На него мы достаточно часто, но не всегда, будем ссылаться с помощью аббревиатуры UNK (от unknown - неизвестно ).

18.2. Обзор концепции трехзначной логики

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

Логические выражения

Выще уже отмечалось, что результатом скалярных операций сравнения, в которых хотя бы один из операндов является величиной UNK, будет логическое значение unknown вместо значения true или false. Поэтому в таких случаях приходится иметь дело с трехзначной логикой. Третьим логическим значением здесь является значение unknown, на которое мы достаточно часто, но не постоянно, будем ссылаться с помощью сокращения ипк. Ниже приведены таблицы истинности для операторов AND, OR и NOT в трехзначной логике (в таблицах используются следующие сокращения: t - true, f- false, и - ипк).

Предположим, что A = 3, В = 4 и переменная С имеет значение UNK. Тогда приведенные ниже выражения будут иметь следующие результаты (приведены справа).

А > В AND В > С : false А > В OR В > С : ипк А < В OR В < С : true NOT ( А = С ) : ипк

Тем не менее для реализации трехзначной логики одних только операторов AND, OR и NOT недостаточно [18.11]. Еще одним важным оператором является оператор MAYBE (возможно) [18.5]. Таблица истинности данного оператора показана ниже.

MAYBE

Чтобы продемонстрировать необходимость в операторе MAYBE, рассмотрим запрос Получить сведения о сотрудниках с годовой зарплатой менее $50 ООО, которые могут быть (но это точно неизвестно) профаммистами и родились до 18 января 1971 года . С помощью оператора MAYBE данный запрос можно достаточно кратко записать в следующем виде.



ЕМР WHERE MAYBE ( JOB = Progranuner AND

DOB < DATE (1971-1-18) AND SALARY < 50000.00 )

(Здесь предполагается, что атрибуты JOB, DOB и SALARY переменной-отношения EMP имеют типы CHAR, DATE и RATIONAL соответственно.) Без оператора MAYBE этот же запрос будет выглядеть следующим образом.

ЕМР WHERE ( IS UNK ( JOB ) AND

DOB < DATE (1971-1-18) AND

SALARY < 50000.00 ) OR ( JOB = Progranuner AND

IS UNK ( DOB ) AND

SALARY < 50000.00 ) OR ( JOB = Progranuner AND

DOB < DATE (1971-1-18) AND

IS UNK ( SALARY ) ) OR ( IS UNK ( JOB ) AND

IS UNK ( DOB ) AND

SALARY < 50000.00 ) OR ( IS UNK ( JOB ) AND

DOB < DATE (1971-1-18) AND

IS UNK ( SALARY ) ) OR ( JOB = Programmer AND

IS UNK ( DOB ) AND

IS UNK ( SALARY ) ) OR ( IS UNK ( JOB ) AND

IS UNK ( DOB ) AND

IS UNK ( SALARY ) )

(Здесь предполагается существование другого истинностного оператора IS unk, который принимает в качестве параметра единственное скалярное выражение и возвращает значение true, если этот операнд равен UNK, или значение false - в противном случае.)

Не следует воспринимать изложенное выше как подтверждение того, что оператор MAYBE является единственным дополнительным логическим оператором, который необходим в трехзначной логике. На практике, например, весьма полезным может оказаться оператор TRUE OR MAYBE. (См. [18.5], а также [18.11].)

Кванторы EXISTS и FOIIALL

Вопреки тому несомненному факту, что для представления большинства примеров в этой книге используется реляционная алгебра, а не исчисление, нам все же следует рассмотреть влияние трехзначной логики на вычисление кванторов реляционного исчисления EXISTS и FORALL. Как говорилось в главе 7, кванторы EXISTS и FORALL определяются как циклические операции OR и AND соответственно. Иначе говоря, если г - отношение с кортежами tl, tl, tm, V- переменная диапазона, которая прини-



мает значения из данного отношения, а p(V) - логическое выражение, в котором используется переменная V, то выражение EXISTS V ( р ( V ) ) по определению эквивалентно следующему выражению.

false OR р ( tl ) OR ... OR р ( tm )

Аналогично выражение FORALL V ( р ( V ) ) по определению эквивалентно такому выражению.

true AND р ( tl ) AND ... AND p ( tm )

Что произойдет, если значение p(ti) для некоторого i будет равно unkl Например, пусть отношение г содержит следующие кортежи.

( 1, 2, 3 ) ( 1, 2, UNK ) ( UNK, UNK, UNK )

Предположим для простоты, что тремя атрибутами в указанном выше порядке слева направо являются атрибуты А, В и С соответственно и каждый из них имеет тип INTEGER. Ниже приведены примеры различных выражений и результаты их вычисления.

EXISTS V (

; V.C > 1

true

EXISTS V (

; v.B > 2

EXISTS V ( MAYBE (

V.A > 3 ) )

true

EXISTS V I

[ IS UNK 1

( V.C ) )

true

FORALL V I

[ V.A > 1

false

FORALL V 1

[ V.B > 1

FORALL V 1

[ MAYBE (

V.C > 1 M

false

Вычисляемые скалярные выражения

Рассмотрим следующее числовое выражение. WEIGHT * 454

Здесь атрибут WEIGHT представляет вес некоторой детали, например детали с номером Р7. Что будет, если вес детали с номером Р7 является величиной UNK? Каким будет значение всего этого выражения? Ответ состоит в том, что значением всего выражения также должна быть величина UNK. В общем случае, если хотя бы один из операндов скалярного выражения является величиной UNK, результатом вычисления всего выражения также будет величина UNK. Таким образом, например, если атрибут WEIGHT содержит величину UNK, результатом вычисления всех приведенных ниже выражений также будет величина UNK.

WEIGHT + 454 454 + WEIGHT + WEIGHT

WEIGHT - 454 454 - WEIGHT - WEIGHT

WEIGHT * 454 454 * WEIGHT

WEIGHT / 454 454 / WEIGHT

Замечание. Вероятно, следует сразу же отметить, что подобная трактовка числовых выражений может привести к появлению некоторых аномалий. Например, выражение WEIGHT - WEIGHT, значением которого должен быть нуль, на самом деле будет иметь



1 ... 219 220 221 [ 222 ] 223 224 225 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика