First you should try to get a clean design in 3NF, i.e. avoid duplicated information as much as possible. Once you are there, you can tune your system to give you the desired performance. Denormalizing things is a valid approach during performance tuning, but it should be the last resort because it comes with a lot of problems and impact on your application design.