>There is one denormalized thing I intend to introduce here ASAP, that's the person's fullname. I've discovered that the full name (like Nedeljkovic, Dragan A.) is constructed from lastname, firstname, middlename fields hundreds of times - and for mere performance reasons I intend it to be stored as a separate field, and recalculated only in event on any edits on any part of the name. This field would never be editable directly, so I think I'll be able to keep it in sync with the fields it's derived from, and it would be recalculated only once, instead of hundreds of times for each report.
Dragan,
Very good example. In most situations that would be denormalization, as long as the combined name was not editable by the user to alter the display of the full name.
I have used a design where there is FirstName, MiddleName, LastName, and SortName but I allowed the user to edit the sort name field because the user needed to control the sorting poosition of any particular name. That requirement made the SortName somehting mroe than simply the combination of the tohers.