Cara null didefinisikan dalam SQL - sebagai non-nilai yang tidak dapat dibandingkan dengan nilai domain - berarti mereka melanggar 1NF (dan semua bentuk normal yang lebih tinggi). Suatu relasi (struktur matematika yang diwakili oleh tabel yang dinormalisasi) harus memiliki nilai tunggal untuk setiap kolom untuk setiap baris. Nulls berarti kami tidak memiliki nilai, dan kolom nullable berarti kami memiliki dua relasi dalam satu tabel - relasi supertipe yang mencakup semua kolom kecuali yang dapat dibatalkan, dan relasi subtipe yang memiliki kunci utama yang sama dan kolom yang sebelumnya dapat dibatalkan, untuk dimana kita hanya dapat merekam baris yang atributnya diketahui. Tujuan normalisasi adalah untuk memfaktorkan kumpulan data menjadi fakta dasar tanpa kehilangan informasi, sehingga memiliki dua hubungan dalam satu tabel bertentangan dengan tujuan dan membuat hal-hal seperti aljabar/kalkulus relasional menjadi lebih rumit.
Bentuk normal adalah struktur formal yang didefinisikan secara logis, bukan praktik terbaik industri yang dapat disesuaikan dengan situasi, jadi saya tidak melihat banyak ruang untuk kontroversi. Apakah kita harus menggunakannya dan bagaimana mereka harus ditangani adalah topik yang lebih menarik.
Meskipun null melanggar formulir normal, itu tidak berarti Anda tidak dapat menggunakan null dalam database SQL Anda. Mereka memiliki risiko sekaligus manfaat. Saya juga menggunakannya, tetapi dengan pertimbangan.