Sposób, w jaki null są definiowane w SQL - jako wartości niebędące wartościami, których nie można porównać z wartościami domeny - oznacza, że naruszają one 1NF (i wszystkie wyższe formy normalne). Relacja (struktura matematyczna reprezentowana przez znormalizowane tabele) musi mieć jedną wartość dla każdej kolumny dla każdego wiersza. Null oznacza, że nie mamy żadnej wartości, a kolumna dopuszczająca wartość null oznacza, że mamy dwie relacje w jednej tabeli - relację nadtypu, która zawiera wszystkie kolumny z wyjątkiem jednej z wartościami null, oraz relację podtypu, która ma ten sam klucz podstawowy i kolumnę, która wcześniej dopuszczała wartość null, dla dla których możemy rejestrować tylko wiersze, dla których znany jest atrybut. Celem normalizacji jest rozłożenie zbioru danych na elementarne fakty bez utraty informacji, więc posiadanie dwóch relacji w jednej tabeli jest sprzeczne z celem i komplikuje takie rzeczy jak algebra/rachunek relacyjny.
Normalne formy to formalnie zdefiniowane logicznie struktury, a nie najlepsze praktyki przemysłowe, które można dostosować do sytuacji, więc nie widzę zbyt wiele miejsca na kontrowersje. To, czy powinniśmy ich używać i jak się z nimi obchodzić, jest ciekawszym tematem.
Chociaż wartości null naruszają normalne formy, nie oznacza to, że nie możesz ich używać w swojej bazie danych SQL. Wiążą się zarówno z ryzykiem, jak i korzyściami. Ja też ich używam, ale z rozwagą.