I'm developing a system where customers can rate Shops.
the question is, in a shop profile, when i want to show the numbers of products she sells and the average rating it got, do i need to query the rating table each time and calculate the data each time or should i save a field in the Shop table - RatingAverage which is update each time the shop is rated by some one.
The same question about the number of sells - save a counter that update each purchase - or query the deals (count the numbers of deals with the specific shop)?
When your site gets a lot of hits, you may want to speed these things up by storing those values in denormalised columns. Especially when you have a lot more reads than writes.
Denormalisation comes at a price, you must make sure those columns always contain the right values. But you could also take a more relaxed way, like saying: I will recalculate those values only every hour, or 15 minutes or so.
With kind regards . . . . . SQL Server 2000/2005/2012
Grabel's Law: 2 is not equal to 3 -- not even for very large values of 2. Pat Phelan's Law: 2 very definitely CAN equal 3 -- in at least two programming languages