После объяснения того, что его схема потребует заменить каждый
домен (скажем, домен XXXX) новым доменом XXXX_OR_UNK, Дейт
переходит к рассмотрению различных операций над специальным
значением UNK. (Мне кажется, что предложенное Дейтом именование
новых доменов может привести к заблуждению, поскольку эти домены
содержат как реальные значения, так и UNK, а не одно или другое.
Обсуждение Дейта было бы немного более понятным, если бы домены с
именами XXXX_OR_UNK понимались как содержащие значения XXXX и
значение UNK.) Он начинает с операции установления равенства и
после определения операции применительно к специальному значению
UNK говорит: "Заметим, что из определения следует, что сравнение
'UNK=UNK' вырабатывает значение true. Здесь нет никакой
трехзначной логики!" (январь 1997 г.).
На самом деле, трудно было бы найти лучший пример потребности в
трехзначной логике! И поскольку именно этот вопрос определяет то,
может ли подход со специальными значениями обеспечить ту же
выразительность, что и MVL, мы должны очень тщательно
проанализировать утверждение Дейта о UNK и равенстве.
Рассмотрим таблицу с двумя столбцами и 100 строками, каждая из
которых содержит пару UNK. Предположим, что домен каждого столбца
включает a) целые числа и b) UNK. Следовательно, для каждой
строки с реальными значениями в обоих столбцах (числа от 1 до
100) шансы того, что строка содержит одинаковые значения,
составляют 1 к 10000 (100*100). Шансы того, что во всех строках
значения столбцов будут одинаковы и того меньше (1 к миллиону).
Предположим, что на интерфейс базы данных подается запрос
"Сколько строк в этой таблице содержат столбцы с равными
значениями" (с использованием схемы со специальными значениями).
В соответствии с определением Дейта ответом будет "Все 100". Но
поскольку мы не знаем реальных значений чисел во всех строках,
шансы того, что этот ответ правильный, составляют 1 к миллиону!
Та ли это схема, которую хотелось бы использовать для обращения к