Введение в системы БД (542480), страница 179
Текст из файла (страница 179)
и, следовательно, во многих коммерческих пролукгах) основан на применении неопределенных значений ()ч(ЛЛ -значений) и трехзначной логики. Например, вес детали, скажем, с номером 'Р7', может быть неизвестен, поэтому упрощенно можно сказать, что ее вес "является неопределенным". В более точном смысле это выражение означает следующее: а) известно, что деталь существует; б) несомненно, деталь имеет вес; в) чему равен вес, нам неизвес~но. Давайте рассмотрим этот пример более внимательно. Ясно, что мы не можем поместить истинное значение веса детали в атрибут ИЕ16НТ кортежа, описывающего деталь с номером 'Р7'.
Следовательно, все, что остается, — пометить или как-то обозначить, что значение атрибута ИЕ16НТ этого кортежа является неопределенным. В дальнейшем наличие подобной метки будет интерпретироваться как указание, что истинное значение атрибута неизвестно. Для удобства можно неформально сказать, что атрибут ИЕ16НТ "содержит неопределенное значение" или что значение этого атрибута "равно ВНЕЙ".
На практике подобные выражения действительно широко используются. Однако следует четко понимать, что подобные выражения неформальны и несколько неточны, поскольку, говоря, что значение атрибута НЕ16НТ в кортеже является неопределенным или равно ННЬЬ, мы на самом деле имеем в виду, что картеж вообще не садержтп никако«а значения атрибута йЕ16Н7. Поэтому широко распространенные выражения "неопределенное значение'* и "значение РЛЛ" использовать не рекомендуется, так как это "неопределенное значение (НЕВЕМ)" на самом деле не значение, а всего лишь некая отметка или обозначение. В следующем разделе будет показано, что при вычислении любого скалярного сравнения, в котором какой-либо из операндов не определен (содержит НУВО), вместо значения г«ие (истина) или 1а7зе (ложь) будет получено логическое значение ип7гпаип (неизвестно).
Причиной такого состояния дел является принятая нами интерпретация обозначения ИНЬЬ как указателя "значение неизвестно". Если значение переменной А неизвестно, то неизвестен и результат любого ее сравнения, например вида Л > В, причем независимо от значения В (даже если предположить, что значение переменной В также неизвестно). В частности, следует отметить, что два неопределенных значения (НУЬЬ) нельзя считать равными одно другому, поэтому, если обе переменные, А и В, содержат неопределенные значения (НЕВЕМ), результатом сравнения А = В всегда будет значение 693 Глава 18.
Отсутствующая информация ипкпозип, а не ггззе. Однако зти переменные не считаются и неравными, т.е. результатом сравнения А я В также будет значение ип7споуеп. Концепция неопределенных значений, по крайней мере в общепринятом смысле, неизбежно приводит нас к необходимости использования логики с тремя логическими значениями: ггие (истина), ~а!хе (ложь) и ипйпоит (неизвестно).
Прежде чем продолжить обсуждение, автор данной книги считает необходимым еще раз заявить, что он полностью разделяет мнение многих авторов о том, что неопределенные значения (М77ЬЬ) и трехзначная логика являются ошибочными понятиями и им нет места в четких формальных системах, подобных реляционной модели'. Однако, оставляя все на своих местах, ему не хотелось бы лишать читателя возможности обсудить неопределенные значения и трехзначную логику, поэтому в настоящее издание и включена данная глава. План главы таков. Непосредственно после введения в разделе ! 8.2 без излишнего недоверия и критики описываются основные идеи, на которых базируется концепция неопределенных значений и трехзначной логики.
(Суть в том, что невозможно строго и справедливо критиковать любые идеи без их предварительного описания.) Затем в разделе 18.3 обсуждаются некоторые более важные следствия изложенных идей и предпринимается попытка обосновать мнение автора о том, что понятие неопределенных значений является ошибочным. В разделе 18.4 рассматриваются следствия наличия неопределенных значений в первичных и внешних ключах.
Далее, в разделе 18.5, будет сделано отступление от основной темы с целью описания чаше всего встречающихся операций в контексте неопределенных значений и трехзначной логики — операций внешнего соединения. В разделе 18.6 в очень сжатой форме описывается альтернативный способ обработки отсутствующей информации с использованием специальных значений. В разделе 18.7 кратко рассматриваются аспекты языка 501, имеющие отношение к обсуждаемой проблеме. И наконец в разделе ! 8.8 приводится краткое резюме.
Еше одно предварительное замечание. Существует множество причин, не позволяющих поместить истинное значение в тот или иной атрибут кар~ежа, и неизвестность этого значения — только одна из возможных причин. Среди других причин следует назвать такие, как "значение неприменимо", "значения не существует" и т.д.
[18.517. Действительно, в [5.2! Кодл предложил использовать в реляционной модели не одно, а два вида З Например, утоерждение о том, что кортеж с описанием некоторой детали не содержит значения атрибута НЕИНТ, эквивалентно — по определению! — утверждению, что данный кортеж вообще не является кортежем описания детали. Иначе говоря, можно утверждать, что элют кортеж не нвляеп1ся реализацией соответствующего предиката.
Суть заключаепкя и том, что самой по себе попып|ки точно сформулировать назначение схемы с использованием неопределенных значений вполне достаточно, чп1обы покизать, почел~у эта идея не ноляется логи~вски последовательной. Одно из следствий этого факта состоит в том, что данную схему очень трудно последовател~но обьяснить. "Илзеет смысл лишь украдкой взглянут~ на эту проблему и осооо не ломать над ней голову" 778 79/.
э - Однако следует особо отметить, что в любом из перечисленных выше случаев как таковой "отсутствуюизей инфорлзации" нет. Например, если для сотрудника ~ 7ОЕ' значение комиссионного возниграждения "неприменимо", значит, для него неприменима сама концепция выплиты комиссионныл' и, такилз образаи, здесь нет никакой отсутствуюизей инчэорл(алии. !Тем не лзенее, если кортеж с описанием сотрудника ',7ое содержит "неприменимое неопределенное значение" и атрибгте колтссионного вознагриждения, эпют кортеж вообще не явяяется кортежем с описанием сотрудника, поскольку он не является корректной реачизицией предикита "Описание сотрудника".) 694 Часть !г. дополнительные аспекты неопределенных значений: одно из них — "значение неизвестно*', а второе — "значение неприменимо*'.
В результате в предложенной Коддом реляционной модели используется уже не трех-, а четырехзначная логика. Автор данной книги возражает против подобных предложений в атой и во всех других своих работах (например, в [18.5]). В данной главе мы сосредоточимся только на одном виде неопределенных значений, а именно — на "значение неизвестно". На него мы достаточно часто, но не всегда, будем ссылаться с помошью аббревиатуры ()ХК (от "ипкпоттп'* — "неизвестно"). 18.2.
Обзор концепции трехзначной логики В атом разделе описываются принципиальные компоненты концепции трехзначной логики применительно к проблеме отсутствуюшей информации. Начнем обсуждение с рассмотрения влияния неопределенных значений (т.е. БЕК) на вычисление логических выражений. Логические выражения Выше уже отмечалось, что результатом скалярных операций сравнения, в которых хотя бы один из операндов является величиной ОЕК, будет логическое значение илйпои и вместо значения ггие или агаве. Позтому в таких случаях приходится иметь дело с трехзначной логикой.
Третьим логическим значением здесь является значение ипйпоч и, на которое мы достаточно часто, но не постоянно, будем ссылаться с помощью сокращения ип4. Ниже приведены таблицы истинности для операторов АЕО, ОЕ и КОТ в трехзначной логике (в таблицах используются следующие сокращения: Š— ггие, Š— ГаЬе, и — ггпй).
Предположим, что й = 3, В = 4 и переменная С имеет значение ОЕК. Тогда приведенные ниже выражения будут иметь следуюшие результаты (приведены справа). А>ВАКФОВ>С г Еа!яе А>ВОЕВ>С: ип)г А < В ОЕ В < С : Егие ВОТ ( А = С ) : ип)г Тем не менее для реализации трехзначной логики одних только операторов АИЭ, ОЕ и ВОТ недостаточно [18.1!]. Еше одним важным оператором является оператор МАТВЕ (возможно) [! 8.5]. Таблица истинности данного оператора показана ниже. Чтобы продемонстрировать необходимость в операторе ИйгВЕ, рассмотрим запрос "Получить сведения о сотрудниках с годовой зарплатой менее $50 000, которые могут быть (но зто точно неизвестно) программистами и родились до 18 января 1971 года".
С помощью оператора ИАУВЕ данный запрос можно достаточно кратко записать в следуюшем виде. 695 Глава !В. Отсутствующая информация ЕМР ННЕКЕ МАУВЕ ( ЗОВ = 'Рговгапаег' АНР РОВ < РАКЕ ('1971-1-18') АНР ЯйьйКУ < 50000.00 ) (Здесь предполагается, что атрибуты ЛОВ, РОВ и ВАРМА переменной-отношения ЕМР имеют типы СНАР., РйТЕ и КАТ10НМ соответственно.) Без оператора НАРВЕ этот же запрос будет выглядеть следующим образом. ЕМР ННЕКЕ ( 18 РНК ( РОВ ) йкв РОВ < РАТЕ ('1971-1-18') МР НАРАВНЕ < 50000.00 ) ( ЛОВ = 'Рговгакаег' МР 18 РКК ( РОВ ) ЛНР ЯАЫКУ < 50000.00 ) ( ЛОВ = 'Рговгакаег' МР РОВ < РйТЕ (' 1971-1-18') МР 18 ОЫК ( НАГОМУ ) ) ( 18 РКК ( ЯОВ ) ЛНР 18 РНК ( РОВ ) АКР БАРМУ < 50000.00 ) ( 18 РНК ( ЮОВ ) йНР РОВ < РАТЕ ('1971-1-18') йНР 18 ОНК ( НЫМИ ) ) ( ЛОВ = 'Рговгапаег' АНР 18 РНК ( РОВ ) АКР 1Я ОНК ( ВАРМА ) ) ( 1Я ОЫК ( ЛОВ ) МР 18 ОНК ( РОВ ) МР 18 РНК ( ЯАРЛКХ ) ) ОК ОК ОК КвантоРы ЕХ1ЯТЯ н к ОКА1Л Вопреки тому несомненному факту, что для представления большинства примеров в этой книге используется реляционная алгебра, а не исчисление, нам все же следует рассмотреть влияние трехзначной логики на вычисление кванторов реляционного исчисления ЕХ1ЯТЯ и РОКАРА.