Каким образом организовать баланс средств в личном кабинете?
Я бы сделал 2 таблицы:
1. Транзакции со счетом (его изменения + причины этого изменения). Только добавление.
2. Состояние счета на дату\время (дата\время, счет, id_юзера). В это таблицу мы только пишем, и ничего не меняем и не удаляем.
Такая структура позволит получить состояние счета за любой промежуток времени.
Отдельную таблицу:
balance
=======
id
user_id
balance
Index - user_id
Fk - user_id
Тогда запросы будут быстрей.