Я бы определенно рекомендовал использовать триггер, используя логику приложения, так как это гарантирует, что база данных сохраняет значение в актуальном состоянии, а не полагается на всех вызывающих. Однако, с точки зрения дизайна, я бы с осторожностью сохранял сгенерированные данные в одной таблице с не сгенерированными данными - я считаю, что важно поддерживать четкое разделение, чтобы люди не запутались в том, какие данные им следует поддерживать и то, что будет поддерживаться для них.
Тем не менее, в целом, предпочитайте представления триггерам - таким образом, вам не нужно беспокоиться о сохранении значения вообще. Профиль, чтобы определить, является ли производительность проблемой. В Postgres, я полагаю, вы могли бы даже создать индекс для вычисленных значений, поэтому базе данных не пришлось бы просматривать детальную таблицу.
Третий способ, периодически пересчитывающий, будет намного медленнее, чем триггеры, и, вероятно, медленнее, чем представление. То, что оно не подходит для вашего использования, так это глазурь на торте:).