Здравствуйте. Есть приложение с некой валютой которую пользователь может расходовать или получать, движение этой валюты нужно учитывать, то есть нужно хранить транзакцию с информацией что, от куда, куда пришло, и еще есть некоторые типы транзакций в которых есть дополнительная информация.
Какую структуру таблиц можно использовать для таких транзакций, учитывая то, что у разных типов транзаций может быть разная информация?
обычно это 2 таблицы: кошельки и переводы (1-м), в некоторых случаях добавляют еще связь кошелька с пользователем (м-1), если у вас не просто валюта а платежка - добавьте понятие счет (предложение заплатить, кстати это самая сложная сущность, в зависимости от ваших хотелок может вырасти в мегаструктуру, типа всякие escrow или регулярные автоплатежи), все остальное кодируется в полях этих таблиц.
Криптовалюты пошли по другому пути и взяли за правило - пусть все есть список транзакций, а транзакция это код - и вокруг этого наворачивают что хочешь (правда через задницу иногда получается зато универсально). Т.е. там вообще только одна таблица - транзакция, все остальное это кеши (например список непотраченных выходов восстанавливается ресканом списка транзакций)