Во всех книжках и конференциях пишут, что null — это "неизвестно какое значение". Соответственно не проходят сравнения на равенство и многие СУБД не позволяют строить индексы UNIQUE BUT NULL. В 99% случаев это верно. Но ведь можно придумать пример, когда null — это не "неизвестно что" а "не существует".
Например: существует таблица с посетителями. Каждый взрослый посетитель обязан иметь паспорт (с уникальным номером). У детей паспорта нет, соответственно значение null в этом случае — "не существует" и null == null в этом примере. Также я думаю можно найти случаи, когда null != null (строго), и когда null строго меньше(больше) любого не-null. Что вы думаете об этих ограничениях (или не-ограничениях) в логике работы СУБД?