Хранение суммы в таблице users
- это один из типов денормализации.
Это может быть целесообразно, если вам нужно часто запрашивать сумму, и слишком сложно выполнять агрегированный запрос каждый раз, когда вам нужно it.
Но вы принимаете на себя риск того, что сохраненная в таблице users
сумма не будет синхронизирована c с действительными SUM(size)
связанных изображений.
Вы не думаете, что это будет сложно, но на практике существует множество крайних случаев, когда хранимая сумма не обновляется. В конечном итоге вы будете периодически выполнять агрегатный запрос в фоновом режиме, чтобы перезаписать сохраненную сумму, на случай, если она вышла из-под контроля c.
Денормализация - это больше работа для вас, как для кодера, потому что вы должен написать код для исправления подобных аномалий. Будьте осторожны с тем, сколько случаев денормализации вы создаете, потому что каждый из них обязывает вас выполнять больше работы.
Но если очень важно, чтобы ваш запрос суммы возвращал результат быстрее, чем это возможно, выполняя агрегатный запрос тогда это то, что вам нужно сделать.
По моему опыту, все оптимизации имеют свою цену.