Innan man kan normalisera så måste alla kolumner i en databasstruktur vara "atomära" dvs varje kolumn i en databasrad innehåller ett värde, exempelvis ett postnummer, ett förnamn eller dyligt.
Jag har sett i vissa databaser dotNetNUKE exempelvis så har man adressen till en person som en kolumn i databasen. Det innebär att värdet inte är atomärt.
Man bör dela upp adressen så man kan hantera gatuadressen, postnr, ort, land var för sig. I mycket välnormaliserade databaser har man dessutom delat upp gatuadressen så man plockat ut gatunummer, trappor m.m. Det är dock ett designbeslut man behöver tänka igenom ordentligt så man kan använda de atomära värdena på ett effektivt sätt i sina applikationer.
Det är viktigt att värdena verkligen är atomära så att man kan lita på datat till 100% när man väl använder det exempelvis vid utskick till 4 Miljoner hushåll, det kostar ju ca 30-40 Mkr att göra såna utskick och då är det viktigt att alla siffror och bokstäver är rätt.
Det kan även uppkomma situationer i framtiden när man vill samköra sitt register för en adresskontroll eller kreditkontroll och då måste man kunna matcha de atomära värdena mot atomära värden i en helt annan databas.
Mankan diskutera var gränsen går när det gller namn men man ska egentligen inte ha behovet av att dela upp ett atomärt värde (egentligen egenskapsbegrepp, inte att förväxla med fritextsökningar av namn).
Här är ett dokument som beskriver normalisering:
http://www.eki.mdh.se/personal/bpn01/under...F03_LDD_2_3.pdf
Normalt är det ganska Ok att jobba med just 3:e normalformen (3NF).