Q:

What are cases in which database values should be stored and in which they should be computed?

Here's what I can discern: 

When values are going to be queried for quite often, it would be best to store them and update the stored values every time they change. The reason being that you'd increase performance by not having to recompute each time. I'm not sure when caching comes into play with database queries as this would be database dependent, hence this factor could drastically change my position
Less often queried values would make sense to be computed upon a query I'm guessing.
There's two extra factors that I can think of -- complimentary to both storing and computing. First would be the extra space associated with storing values and whether or not it would be trivial. If not, computing may be more viable. Second -- in a very similar way -- is the time cost associated with computing values and whether or not that would be trivial also -- which would make the query frequency more of a concern. 

Are there any other reasons to choose one or the other between storing and computing database values?

A:

If it's an operational / transactional database, like an ERP or e-commerce store, then you fully normalize, and don't store computed values.
If it's a data warehouse, then you can store computed values.
Premature optimization is premature. Write your application properly, measure performance, find bottlenecks, and then optimize. 

