"Cheating" Normal Form
I suggest you go with the normalized data model and use JOINS. In practicality, sometimes there is no need to drill down to atomic level, you can stop the level of aggregation based on the requirement. Also, if the historical data is important for you, you could consider the historical table instead of updating the meta data information. For this you can refer, Slowly Changing Dimensions (SCD). 

If calculation involved complexities, understand the relationship between respective entities and capture them in table. This you can achieve by creating stored procedures or functions.

I hope, this answer will help you to get start. Thank you.