Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Отсутствующие данные

В системах управления базами данных для определения отсутствующих данных описаны два вида значений: пустые Empty и неопределенные Null. Между ними есть принципиальное различие.

Пустое значение – это одно из множества возможных значений определенного типа данных. С пустым значением возможны все те же операции, которые возможны с обычным значением поля.

Если числовое поле имеет пустое значение, при использовании его в выражении оно будет трактоваться как имеющее значение 0.

Если текстовое поле имеет пустое значение, при использовании его в выражении оно будет трактоваться как имеющее значение “” (пустая строка).

Если логическое поле имеет пустое значение, при использовании его в выражении оно будет трактоваться как имеющее значение False.

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

В СУБД для проверки на пустоту применяется логическая функцияIsEmpty(“выражение”), применимая к выражениям любого типа. Пустыми считаются объявленные, но не инициализированные переменные, а также переменные, которым явно присвоено значение Empty.

Неопределенные значения (значения Null) появляются в ячейках таблицы, когда соответствующие данные неизвестны или не существуют. Null значение допустимо для данных любого типа: числового, текстового, логического, даты.

Неопределенные значения ведут себя в выражениях особым образом. В большинстве случаев результатом операции, аргументом которой является неопределенное значение, также будет неопределенное значение. Это правило справедливо для:

· любых арифметических операций,

· любых операций с текстовыми данными,

· любых операций сравнения (<, ≤, ≠, =, ≥, >),

· логическим операциям НЕ, И, ИЛИ (кроме законов поглощения).

Из-за того что значения полей в базе данных могут быть неопределенными, при анализе данных можно получить неожиданные результаты.

В случае с арифметическими операциями, например, при неопределенном X (X = Null) выражения X – X, (X – X)*A или X * 0 вместо ожидаемого 0 дадут неопределенный результат.

В случае с операциями сравнения выражения X < X, X = X, X ≠ X, X > X дадут результат Null, если X = Null, а не ожидаемые нами True или False.

Исключения из этого правила касаются логических операций, поэтому рассмотрим их более подробно.

Обычно в системах управления базами данных непосредственно поддерживаются только три логические операции: отрицание или логическое НЕ, конъюнкция или логическое И, дизъюнкция или логическое ИЛИ. Все остальные известные логические операции могут быть представлены через эти три. Можно отметить, что только две из этих трех операций являются независимыми (И выражается через ИЛИ и НЕ, ИЛИ выражается через И и НЕ).

Операция НЕ является унарной, то есть имеет только один аргумент X. Ее таблица истинности:

X Not(X)
Null Null

В этой таблице 0 соответствует значению False, 1 – значению True. В таблице представлена информация о том, как данная операция действует на неопределенное значение.

Операция И (конъюнкция) является бинарной, то есть имеет два аргумента X и Y. Ее таблица истинности:

X And Y
Y X Null
Null
Null Null Null

Для операции И значение False является поглощающим. Если один из аргументов И имеет значение False, то результат операции тоже False независимо от значения второго аргумента (даже если второй аргумент Null).

Операция ИЛИ (дизъюнкция) является бинарной, то есть имеет два аргумента X и Y. Ее таблица истинности:

X Or Y
Y X Null
Null
Null Null Null

Для операции ИЛИ значение True является поглощающим. Если один из аргументов ИЛИ имеет значение True, то результат операции тоже True независимо от значения второго аргумента (даже если второй аргумент Null).

В СУБД реализуется обычная двузначная логика, поэтому условие с неопределенным (Null) значением должно интерпретироваться системой как False или как True. По умолчанию в системах управления базами данных установлено опознавание условия с Null-значением как значения False.

Этот факт также может привести к неожиданным результатам при анализе данных. Например, следующие два условных оператора в нормальных условиях, когда переменная Р определена, равносильны:

if P then A else B

if Not(P) then B else A

В обоих случаях выполняется действие A, если P = True, и действие B, если P = False. Однако, если P имеет неопределенное значение, ситуация меняется. В первом случае СУБД расценивает P как имеющую значение False, то есть будет выполнено действие B. Во втором случае Not(P) как и P имеет неопределенное значение, то есть также расценивается СУБД как False, поэтому будет выполнено действие A.

При анализе данных необходимо помнить о существовании неопределенных значений. Для проверки, является ли данное значение неопределенным, служит логическая функция IsNull(“выражение”), применимая к выражениям любого типа. Данная функция возвращает True, если выражение равно Null, в противном случае она возвращает False. Функция IsNull никогда не возвращает Null.


<== предыдущая страница | следующая страница ==>
Связывание таблиц | Структура таблиц и типы данных

Дата добавления: 2015-06-30; просмотров: 219; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.