Det beror på ... att gå med i tabeller är i sig långsammare än att ha ett stort bord som är "föranslutet", dvs avnormaliserat. Men genom att avnormalisera kommer du att skapa dataduplicering och dina tabeller kommer att bli större. Normalisering ses som en bra sak, eftersom det skapar databaser som kan svara på "alla" frågor, om det görs på rätt sätt kan du bygga ett urval för att komma till din data. Detta är inte fallet i vissa andra former av DB, och det är nu (för det mesta) historiska irrelevanser, den normaliserade/relationen DB vann den kampen.
Tillbaka till din fråga, att använda avnormalisering för att få saker att gå snabbare är en väl accepterad teknik. Det är normalt bäst att köra din DB ett tag så att du vet vad du ska avnormalisera och vad du ska lämna ifred, och det är också vanligt att lämna data i sin "korrekta" normaliserade form och dra data till en uppsättning avnormaliserade rapporter bord regelbundet. Om den processen görs som en del av själva rapportens körning är uppgifterna också alltid uppdaterade.
Som ett exempel på övernormalisering har jag sett DB:er tidigare där veckodagarna och årets månader drogs ut i separata tabeller - själva datumen normaliserades - du kan gå för långt.