but on the other other hand, maintaining data in unnormalised table is horrible and easy to corrupt..as you end up essentially having to enforce a relational join in code, rather than at the structural/DB level. any and every operation on the table will have the capacity to ruin/corrupt the data.
i think it essential that the relational model and normalisation is understood and first tried, before if/any decision to de-normalise. such de-normalisation decisions should be based on quantitative performance measurements; not on mere pondering. As a possible guideline using current technology, millions of rows in a normalised table with two or more relationships (joins) would make for a possible candidate for de-normalisation. And if performance metrics and other factors dictated de-normalisation, central functions are developed that will always be used to Create Read Update Delete the table, to avoid data corruption.
not trying to be too hard-up about this..but maintaining a relational database through code is not easy or desirable at the outset. Better chance of success using normalised tables instead.