Введение в системы БД (542480), страница 180
Текст из файла (страница 180)
Как говорилось в главе 7, кванторы ЕХ1ЯТЯ и РОКАРА определяются как циклические операции ОК и АНР соответственно. Иначе говоря, если г— отношение с кортежами 81, 02, ..., Ее, т' — переменная диапазона, которая прини- 696 Часть р'. дополнительные аспекты (Здесь предполагается существование другого истинностного оператора 18 РНК, который принимает в качестве параметра единственное скалярное выражение и возвращает значение !гие, если этот операнд равен ОНК, или значение /а)зе — в противном случае.) Не следует воспринимать изложенное выше как подтверждение того, что оператор МАУВЕ является единственным дополнительным логическим оператором, который необходим в трехзначной логике. На практике, например, весьма полезным может оказаться оператор ТВОЕ ОК МАТВЕ.
(См. !!8.5], а также (!8.! !].) мает значения из данного отношения, а р(Ч) — логическое выражение, в котором ис- пользуется переменная Ч, то выражение ЕХ1ЯТЯ Ч ( р ( Ч ) ) по определению экви- валентно следующему выражению. Ыяе ОЕ р ( С1 ) ОН ... ОК р ( Сп ) Аналогично выражение РОВАТЬ Ч ( р ( Ч ] ) по определению эквивалентно такому выражению. С е АИО р ( С1 ) АИО ...
АИО р ( Сп ) Что произойдет, если значение р(СТ) пля некоторого Т будет равно ипА? Например, пусть отношение г содержит следующие кортежи. ( 1, 2, 3 ) ( 1, 2,ОИК) ( ОИК, ОМК, ОИК ) Предположим для простоты, что тремя атрибутами в указанном выше порядке слева направо являются атрибуты А, В и С соответственно и каждый из них имеет тип 1ИТЕОЕН. Ниже приведены примеры различных выражений и результаты их вычисления. ЕХ1ЯТЯ Ч ( Ч.С > 1 ) ЕХ1ЯТЯ Ч ( Ч.В > 2 ) ЕХ1ЯТЯ У ( ИАТВЕ ( Ч.А > 3 ) ) ЕХ1ЯТЯ Ч ( 1Я ОНК ( Ч.С ) ) ГОНА11 Ч ( Ч.А > 1 ) РОНАЫ.
Ч ( Ч.В > 1 ) РОНА11 Ч ( ИАТВЕ ( Ч.С > 1 ) ) Вычисляемые скалярные выражения Рассмотрим следующее числовое выражение. ИЕ16НТ * 454 Здесь атрибут ИЕ16НТ представляет вес некоторой детали, например детали с номером 'Р7'. Что будет, если вес детали с номером 'Р7' является величиной ОНК? Каким будет значение всего этого выражения? Ответ состоит в том, что значением всего выражения также должна быть величина ОИК. В общем случае, если хотя бы один из операндов скалярного выражения является величиной ОИК, результатом вычисления всего выражения также будет величина ОИК.
Таким образом, например, если атрибут ИЕ16НТ содержит величину ОЫК, результатом вычисления всех приведенных ниже выражений также будет величина ОИК. 454 + ИЕ16НТ 454 - ИЕ16НТ 454 * ИЕ16НТ 454 / ИЕ16НТ + ИЕ16НТ - ИЕ16НТ Замечиние. Вероятно, следует сразу же отметить, что подобная трактовка числовых выражений может привести к появлению некоторых аномалий. Например, выражение ИЕ16НТ - ИЕ16НТ, значением которого должен быть нуль, на самом деле будет иметь 697 Глава 18.
Отсутствующая информация ИЕ16НТ + 454 ИЕ16НТ - 454 ИЕ16НТ " 454 ИЕ16НТ / 454 Сгие ипй Сгие Сгие : Га1ае : ипй : Га1яе значение ОНК, а результатом вычисления выражения НЕ?СНТ/О будет также величина ОНК вместо обычного в данном случае сообщения об ошибке деления на нуль (конечно, в обоих выражениях предполагается, что атрибут НЕ?ОНТ содержит величину ОНК). Такие аномалии будут игнорироваться до особого упоминания. Аналогичные рассуждения применимы ко всем другим скалярным типам и операторам, за исключением операторов сравнения, рассмотренного выше оператора 1Я ОНК и рассматриваемого ниже оператора 1Г ОНК (см. два предыдуших подраздела). Таким образом, для символьных строк выражение А ) ) В возвращает ОНК, если А равен ОНК либо В равен ОНК, либо оба равны ОНК.
(Снова следует отметить существование аномальных случаев, рассмотрение которых мы здесь опустим.) Оператор 1Г ОНК получает на входе два операнда и возвращает значение первого операнда, если это не величина ОНК. Если первый операнд является величиной ОНК, то оператор 1Г ОНК возвращает значение второго операнда. Другими словами, это оператор преобразования величины ННК в некоторое значение, не равное ОНК. Например, предположим, что значение ОНК разрешено использовать для помещения в атрибут С?ТУ переменной-отношения Я. Рассмотрим следующее выражение.
ЕХТЕКВ Я АВВ 1Г ОНК ) С?ТУ, 'СГСГ ппХпоип') АЯ ЯС?ТУ В результате его вычисления будет получена переменная-отношение, в которой значение атрибута ЯС1ТГ равно 'С?Су пдХпоип' для каждого поставщика, город которого в переменной-отношении Я определен как ОНК.
Следует заметить, что оператор 1Г ОНК можно определить с помощью оператора 1Я ОНК. Точнее говоря, выражение 1Г ОНК ) <иираиинии1>, <вираиеиие2> ), где параметры <виражение1> и <вираиение2> должны иметь олинаковые типы, эквивалентно следующеь)у выражению. 1Г 1Я ОНК )<внраиение1>) ТНЕН <виражение2> ЕЬЯЕ <вираиеиие1> ЕКВ 1Г НЛМК - это не ипГс Очень важно понимать, что величина ОНК (неопределенное значение вила "значение неизвестно") и значение ип(с (логическое значение ипАпоип) — это не одно и то жез.
Действи~ельно, данное положение дел является прямым следствием того, что ип(с — это значение (точнее, логическое значение), в то время как величина ОНК вообще не является значением. Но давайте более точно сформулируем сказанное выше. Предположим, что Х является переменной логического типа (ВООЬЕАН). Тогда она может принимать одно из следующих значений; (гие,)а1зе или ип(с Таким образом, выражение "Х равно ип(с" означает в точности то, что значение переменной Х известно и равно ип(с В отличие от этого выражение "Х равно ОНК" означает, что значение переменной Х неизвестно.
Могут ли домены содержать величину ЮХК Из того факта, что ОНК не является значением, прямо следует заключение, что домены (т.е. множества значений) не могут содержать величину ОНК, Действительно, если бы домены могли содержать неопределенные значения какого-либо вида, проверка ограниче- З Теи не менее в стандарте БААЗ они рассматриваются как эквивалентные понятия (см. арало>кение Б).
698 Часть )'. Дополнительные аспекты ний целостности для них всегда завершалась бы с положительным результатом! Однако, поскольку домены в действительности не могут содержать величину БЫК, "отношения", допускающие присутствие величины УНК, являются чем угодно, но только не реляционными отношениями. Причем это верно как для отношений, определение которых дано в главе 5, так и для отношений, отвечающих оригинальному определению Кодда 15.11. К обсуждению этого важного вопроса мы еше вернемся в разделе К.б. Реляционные выражения Рассмотрим влияние величины ВНК на операторы реляционной алгебры.
Для простоты ограничимся пятью примитивными операторами: выборки, проекции, произведения, объединения и вычитания (воздействие величины ВКК на другие операторы можно определить на основе заключений о ее воздействии на пять перечисленных операторов). Прежде всего заметим, что на операцию произведения величина ВМК никакого влияния не оказывает. Затем операцию выборки следует несколько переформулировать, потребовав, чтобы возвращались только кортежи, для которых условие выборки имеет значение ггие, т.е. эта операция не должна включать в результат кортежи, для которых условие выборки принимает значение)а)зе или ипк. Замечание. Использование именно этой формулировки неявно предполагалось в примере с оператором ИазВЕ, приведенном выше, в разделе о логических выражениях.
Теперь рассмотрим оператор проекции. Проецирование отношения подразумевает, кроме всего прочего, исключение кортежей-дубликатов. В двухзначной логике два кортежа считаются дубликатами тогда и только тогда, когда все соответствующие компоненты обоих кортежей равны. Однако в трехзначной логике некоторые компоненты кортежей могут содержать величину ВМК, а величина БЫК не равна никакой другой величине, даже самой себе. Следует ли из этого заключить, что кортеж, который содержит величину ВВК, не может быть дубликатом другого кортежа и даже самого себя? Согласно Кодду 1! 3.6) ответ на этот вопрос отрицательный: две величины УКК, даже если они не равны между собой, считаются дубликатами одна другой в целях исключения кортежей-дубликатовл. Очевидное противоречие объясняется следуюшим образом.
"...проверка в процессе исключения зсортежей-дубликатов... выполняется на более низком ) ровне детализации па сравнению с тестированием на наличие равенства в операциях выборки. Поэтам> здесь можно применять различные правила. " Автор предоставляет читателю право решать, является ли такое обоснование приемлемым. В любом случае давайте согласимся сейчас с этим обоснованием, а заодно примем следуюшее определение.
° Кортежи Г1 и С2 являются дубликатами один другого тогда и только тогда, когда они имеют одинаковые атрибуты и каждые два значения соответствующих атрибутов в обоих кортежах либо имеют одинаковые значения, либо оба содержат величину ВВК. Е Работа (13.б) была первой работой Кодда, в которой рассмитривалось проблема отсутствия информации, хотя описание этой пробле.ны не являлось основной задачей стат~и 1см. главу 13).