Коллектив Авторов - Базы данных: конспект лекций
- Название:Базы данных: конспект лекций
- Автор:
- Жанр:
- Издательство:Конспекты, шпаргалки, учебники «ЭКСМО»b4455b31-6e46-102c-b0cc-edc40df1930e
- Год:2007
- Город:Москва
- ISBN:978-5-699-23778-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Коллектив Авторов - Базы данных: конспект лекций краткое содержание
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и предназначен для освоения студентами вузов специальной дисциплины «Базы данных».
Лаконичное и четкое изложение материала, продуманный отбор необходимых тем позволяют быстро и качественно подготовиться к семинарам, зачетам и экзаменам по данному предмету.
Базы данных: конспект лекций - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
IsNull (<���выражение>), что буквально означает «есть Null».
Логическая функция возвращает значение True, если в выражении присутствует Null или оно равно Null, и False – в противном случае, но никогда не возвращает значение Null. Предикат IsNull может применяться к переменным и выражению любого типа. Если применять его к выражениям пустого типа, предикат всегда будет возвращать False.
Например:

Итак, действительно, видим, что в первом случае, когда предикат IsNull взяли от нуля, на выходе получилось значение False. Во всех случаях, в том числе во втором и третьем, когда аргументы логической функции оказались равными Null-значению, и в четвертом случае, когда сам аргумент и был изначально равен Null-значению, предикат выдал значение True.
4. Null-значения и логические операции
Обычно в системах управления базами данных непосредственно поддерживаются только три логические операции: отрицание ¬, конъюнкция & и дизъюнкция ∨. Операции следования ⇒ и равносильности ⇔ выражаются через них с помощью подстановок:
( x ⇒ y ) ≔ (¬ x ∨ y );
( x ⇔ y ) ≔ ( x ⇒ y ) & ( y ⇒ x );
Заметим, что эти подстановки полностью сохраняются и при использовании Null-значений.
Интересно, что при помощи операции отрицания «¬» любая из операций конъюнкция & или дизъюнкция ∨ может быть выражена одна через другую следующим образом:
( x & y ) ≔¬ (¬ x ∨¬ y );
( x ∨ y ) ≔ ¬ (¬ x & ¬ y );
На эти подстановки, как и на предыдущие, Null-значения влияния не оказывают.
А теперь приведем таблицы истинности логических операций отрицания, конъюнкции и дизъюнкции, но кроме привычных значений True и False, используем также Null-значение в качестве операндов. Для удобства введем следующие обозначения: вместо True будем писать t, вместо False – f, а вместо Null – n.
1. Отрицание¬x.

Стоит отметить следующие интересные моменты касательно операции отрицания с использованием Null-значений:
1) ¬¬x ≔ x – закон двойного отрицания;
2) ¬Null ≔ Null – Null-значение является неподвижной точкой.
2. Конъюнкция x & y.

Эта операция также имеет свои свойства:
1) x & y ≔ y & x – коммутативность;
2) x & x ≔ x – идемпотентность;
3) False & y ≔ False, здесь False – поглощающий элемент;
4) True & y ≔ y , здесь True – нейтральный элемент.
3. Дизъюнкция x∨ y.

Свойства:
1) x ∨ y ≔ y ∨ x – коммутативность;
2) x ∨ x ≔ x – идемпотентность;
3) False ∨ y ≔ y , здесь False – нейтральный элемент;
4) True ∨ y ≔ True, здесь True – поглощающий элемент.
Исключение из общего правила составляют правила вычисления логических операций конъюнкция & и дизъюнкция ∨ в условиях действия законов поглощения:
(False & y ) ≔ ( x & False) ≔ False;
(True ∨ y ) ≔ ( x ∨ True) ≔ True;
Эти дополнительные правила формулируются для того, чтобы при замене Null-значения значениями False или True результат бы все равно не зависел бы от этого значения.
Как и ранее было показано для других типов операций, применение Null-значений в логических операциях могут также привести к неожиданным значениям. Например, логика на первый взгляд нарушена в законе исключения третьего(x ∨ ¬x) и в законе рефлексивности(x = x), поскольку при x ≔ Null имеем:
(x ∨ ¬x), (x = x) ≔ Null.
Законы не выполняются! Объясняется это так же, как и раньше: при подстановке Null-значения в выражение информация о том, что это значение сообщается одной и той же переменной теряется, а в силу вступает общее правило работы с Null-значениями.
Таким образом, делаем вывод: при выполнении логических операций с Null-значениями в качестве операнда эти значения определяются системами управления базами данных как применимое, но неизвестное.
5. Null-значения и проверка условий
Итак, из всего вышесказанного можно сделать вывод, что в логике систем управления базами данных имеются не два логических значения (True и False), а три, ведь Null-значение также рассматривается как одно из возможных логических значений. Именно поэтому на него часто ссылаются как на неизвестное значение, значение Unknown.
Однако, несмотря на это, в системах управления базами данных реализуется только двузначная логика. Поэтому условие с Null-значением (неопределенное условие) должно интерпретироваться машиной либо как True, либо как False.
В языке СУБД по умолчанию установлено опознавание условия с Null-значением как значения False. Проиллюстрируем это следующими примерами реализации в системах управления базами данных условных операторов If и While:
If P then A else B;
Эта запись означает: если P принимает значение True, то выполняется действие A, а если P принимает значение False или Null, то выполняется действие B.
Теперь применим к этому оператору операцию отрицания, получим:
If ¬P then B else A;
В свою очередь, этот оператор означает следующее: если ¬P принимает значение True, то выполняется действие B, а в том случае, если ¬P принимает значение False или Null, то будет выполняться действие A.
И снова, как мы видим, при появлении Null-значения мы сталкиваемся с неожиданными результатами. Дело в том, что два оператора If в этом примере не эквивалентны! Хотя один из них получен из другого отрицанием условия и перестановкой ветвей, т. е. стандартной операцией. Такие операторы в общем случае эквивалентны! Но в нашем примере мы видим, что Null-значению условия P в первом случае соответствует команда B, а во втором – A.
А теперь рассмотрим действие условного оператора While:
While P do A; B;
Как работает этот оператор? Пока переменная P имеет значение True, будет выполняться действие A, а как только P примет значение False или Null, выполнится действие B.
Но не всегда Null-значения интерпретируются как False. Например, в ограничениях целостности неопределенные условия опознаются как True (ограничения целостности – это условия, накладываемые на входные данные и обеспечивающие их корректность). Это происходит потому, что в таких ограничениях отвергнуть нужно только заведомо ложные данные.
И опять-таки в системах управления базами данных существует специальная функция подмены IfNull (ограничения целостности, True), с помощью которой Null-значения и неопределенные условия можно представить в явном виде.
Читать дальшеИнтервал:
Закладка: