Du differenzierst es ja schon falsch aus: Ein Datenmodell hat Datentypen und das nicht ohne Grund.
NULL ist einfach nichts und in den aller meisten Fällen auch vermeidbar, wenn man sich mal hinsetzt und etwas genauer über sein Datenmodell nachdenkt und dabei auch die 3NF berücksichtigt.
Dann kommt man schnell zu dem Schluss, dass es so etwas wie "weiß nicht" wirklich nur in Ausnahmefällen gibt, denn meistens ist ein "weiß nicht" dann einfach kein Eintrag einer Entität und nicht ein NULL-fähiges Attribut.
Edit: Dazu kommt, dass SQL halt eine 3-Werte-Logik kennt. Wahr, falsch, unbekannt. NULL ist dieses unbekannt. Jetzt ist X = X also weder wahr noch falsch wenn X den Wert NULL hat ist der Zustand Unbekannt und kann mit diesen Operatoren nicht abgefragt werden. Mit einer entsprechenden Konfiguration kann X > X dann jedoch wahr sein, wenn X NULL wäre. Das sieht man aber erst auf den zweiten und dritten Blick. Mag ja für Leute, die Datenbankdesidgner, Entwickler, Admin und weiß der Kukckuk in Personalunion sind kein Problem darstellen - es soll aber Firmen geben, da richten die Fachanwendungsentwickler nicht die Datenbank auf den Server ein...
Das und viele weitere Fehler, die sich dann von der Datenbank in die Anwendungen ziehen, wie zum Beispiel, dass viele Programmiersprachen den Wert NULL nicht kennen und dann irgendwas interpretieren, Beispielsweise Interger NULL wird dann zu einer 0 interpretiert - was Logisch jedoch falsch ist usw. führt dazu, dass man NULL einfach wirklich nur für die unvermeidbaren Ausnahmen, die es gibt (Geburtsdatum bei Juristischen Personen z.B.) verwenden sollte - und wo immer es geht einfach nochmal ein Zweites Mal Nachdenken, bevor man ein Attribut als "NULLable" festlegt.