De manier waarop nulls in SQL worden gedefinieerd - als niet-waarden die niet kunnen worden vergeleken met domeinwaarden - betekent dat ze 1NF (en alle hogere normalen-vormen) schenden. Een relatie (de wiskundige structuur die wordt weergegeven door genormaliseerde tabellen) moet een enkele waarde hebben voor elke kolom voor elke rij. Nulls betekenen dat we geen waarde hebben, en een kolom met nulling betekent dat we twee relaties in één tabel hebben - een supertype-relatie die alle kolommen omvat behalve de nullable, en een subtype-relatie die dezelfde primaire sleutel en de eerder nullbare kolom heeft, voor waarvoor we alleen rijen kunnen opnemen waarvan het attribuut bekend is. Het doel van normalisatie is om een dataset te ontbinden in elementaire feiten zonder informatie te verliezen, dus het hebben van twee relaties in een enkele tabel is in tegenspraak met het doel en maakt zaken als relationele algebra/calculus ingewikkelder.
De normaalvormen zijn formeel logisch gedefinieerde structuren, geen industriële best practices die aan de situatie kunnen worden aangepast, dus ik zie niet veel ruimte voor controverse. Of we ze moeten gebruiken en hoe ze moeten worden behandeld, is een interessanter onderwerp.
Hoewel nulls de normale vormen schenden, betekent dit niet dat u geen nulls in uw SQL-database kunt gebruiken. Ze hebben zowel risico's als voordelen. Ik gebruik ze ook, maar met aandacht.