Попытка создать базу данных. У меня есть таблица User
, в которой должно быть поле balance
. Он может быть рассчитан каждый раз, когда мне нужен баланс на основе 4 таблиц, как показано ниже:
Так что мне нужно выполнить некоторые математические операции, такие как сумма всех депозитов, минус сумма снятия средств, минус сумма ставки + прибыль, плюс сумма бонусов. В каждой связанной таблице могут быть тысячи записей для каждого пользователя.
Или же я могу просто обновить поле balance
из кода приложения всякий раз, когда одна из связанных таблиц была изменена.
Однако первый метод, как правило, медленнее и медленнее по мере роста базы данных. Второй метод подвержен ошибкам, в случае, если мое приложение не сможет обновить поле и реальный баланс будет асинхронизирован с полем баланса.
Интересно, есть ли какой-либо шаблон проектирования или методика для обработки этих случаев? Как подсчитывают баланс в онлайн-банкингах или подобных сервисах? Проводят ли они каждую банковскую транзакцию каждый раз, когда запрашивается баланс?