Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700276.doc
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
1.94 Mб
Скачать

6.4. Неопределенные значения и трехзначная логика

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

В связи с этим может возникнуть вопрос, связанный с тем, что в результате выполнения манипуляции над данными один или несколько операндов имеют значение NULL, а следовательно будет получено неизвестное значение в качестве результата. По­этому, например, при сравнении X и Y, если значение X неопре­деленное, будет получено значение НЕИЗВЕСТНОЕ, а не ИС­ТИНА или ЛОЖЬ. Более того, если X и Y приняли неопределен­ное значение, то выполнение сравнения X и Y также даст в каче­стве результата значение НЕИЗВЕСТНОЕ, так как оба значения нельзя рассматривать как равные друг другу.

Для идентификации подобных значений требуются специаль­ные средства СУБД, важнейшим из которых есть оператор ЕС­ЛИ НЕОПРЕДЕЛЕННОЕ, определяющий, является ли значение-операнд неопределенным. Кстати говоря, только выполнение это­го оператора над неопределенными значениями дает значение ИСТИНА или ЛОЖЬ; в качестве результата выполнения других операторов будет получено значение НЕИЗВЕСТНОЕ.

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

СОЗДАТЬ ОГРАНИЧЕНИЕ ЦЕЛОСТНОСТИ RULE6 ДЛЯ ВСЕХ SРР(ЕСЛИ_НЕОПРЕДЕЛЕННОЕ(SРР.Р"))

НЕ ВЫПОЛНЯТЬ ПРИ НАРУШЕНИИ ПРАВИЛА

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

Таблица 6.1

Возможные значения логической функций И

И

ИСТИНА

ЛОЖЬ

NULL

ИСТИНА

ИСТИНА

ЛОЖЬ

И

ЛОЖЬ

ЛОЖЬ

ЛОЖЬ

ЛОЖЬ

NULL

И

ЛОЖЬ

И

Таблица 6.2

Возможные значения логической функции ИЛИ

ИЛИ

ИСТИНА

ЛОЖЬ

И

ИСТИНА

ИСТИНА

ИСТИНА

ИСТИНА

ЛОЖЬ

ИСТИНА

ЛОЖЬ

И

NULL

ИСТИНА

И

И

Таблица 6.3

Возможные значения логической функции НЕ

Необходимо обратить внимание на то, что домены неопреде­ленных значений содержать не могут, например по причине того, что в результате проверки вхождения выражения в домен будет всегда получаться значение ИСТИНА или НЕИЗВЕСТНОЕ.

Введение неопределенного значения, естественно, влияет на реляционные выражения. Например, операция выборки модифи­цируется таким образом, чтобы в качестве результата возвраща­лись только те кортежи, для которых условие выборки принимает только значение ИСТИНА, а для значений ЛОЖЬ или НЕИЗ­ВЕСТНОЕ не включаются.