My company has a product centered around a fairly normalized mssql server database. At this point we have several reports and a web application that needs the data in a much flatter fashion to display the data appropriately to the user. Today we are using views/stored procedures to provide flattened data model needed by the reports and web app.
Currently there are performance problems though with several of the views due to the amount of aggregate data and joins being performed inside the views. My thought was to instead provide denormalized tables that could be optimized for performance for both the reports and the web application. These denormalized tables would be built at some interval of time or maintained as updates happened to the underlying oltp tables.
Is this a common thing to do? Am I asking for trouble as far as performance just keeping these tables up to date? What mechanisms are the best for building these sort of tables? Is there a better way to do this than these denormalized tables?