The actual problem is not the tables, but the queries. In most situations you would not store calculated values, but this is one that would be safest to do so.
The problem lies within the calculations, if they were simpler, then there would be more avenues in which to rely on and use. However...