By default, redundant information is not saved: the third normal form is usually a reasonable initial goal. Reservation is introduced when a “reasonably good” reason appears, such as a “reasonably large” performance that you get when you have to calculate a derived value and the calculation is intense.
Obviously, “good enough” and “big enough” are qualifiers that only mean something in this context. For what it's worth, a retail / discount calculation is considered too cheap and easy to use to guarantee the introduction of an excess column in most (obviously not all) cases.
Tomislav nakic-alfirevic
source share