Если вы обновляете цену или количество, вы вынуждены сделать обновление 2cd на TotalPrice. Что если другой разработчик забудет об обновлении 2cd? Теперь у вас плохие данные.
У вас может быть триггер для синхронизации, но вероятность плохих данных все еще существует. В некоторых RDMS триггеры не запускаются для каждой строки, обновляемой в обновлении на основе набора.
Но иногда это необходимо для хранения вычисляемых полей. Если таблица БОЛЬШАЯ и вы планируете поиск в вычисляемом поле. (Вы должны хранить данные, чтобы проиндексировать их). В некоторых проектах вы сохраняете не только рассчитанные поля, но и совокупные вычисления.
Хранить вычисленные поля не всегда неправильно, просто убедитесь, что вы знаете компромиссы.
* РЕДАКТИРОВАТЬ *
Еще один момент. Если вы рассчитываете «Amount_Paid», фактическая сумма, уплаченная клиентом, будет потеряна при изменении формулы расчета.
Дизайн для решения проблемы. Если это означает нарушение правила большого пальца, то сломайте некоторые большие пальцы.
* КОНЕЦ РЕДАКТИРОВАНИЯ *