banderos120
@banderos120
Играю на балалайке

Как спроектировать таблицу(ы) для денежных транзакций в MySQL?

Здравствуйте.
Нужны транзакции в проекте. Транзакции будут :
  • зачисление на счет пользователя с внешнего источника;
  • зачисление с внутренних источников (бонусы, баллы и т.д.);
  • зачисления и списание, в общем - переводы средств между счетами польщователей;
  • вывод средств на внешний счет.

Вопрос в том, хватит ли одной таблицы ? Пока в голову приходят следующие поля:
id
sender_id (NULL или id-пользователя)
recepient_id (NULL или id-пользователя)
value (значение перевода)
created_at
update_at
salt (для внешних переводов)
active (для внешних переводов нужно подтвердить, при внутренних - уже подтверждено)
type (тип INTERNAL_TRANSACTION или FOREIGN_TRANSACTION )
--
Если sender_id или recepient_id равны NULL , то перевод считается внешним (или зачисление бонусов), если не пустые, то внутренним.
Была мысль разбить на две таблицы, одна: для хранения реальных транзакций; другая : для проведения внутренних транзакций (а так же учета зачисления средств из-вне и списания во-вне средств), но тога получается две одинаковых таблицы.
--
Еще, конечно, нужно поле для обозначения внешней системы, которая работает с платежом, типо "PAYPAL", "WEBMONEY", "CARD", "YANDEXMONEY" и т.д.
--
Нужен совет по правильной организации.
  • Вопрос задан
  • 1047 просмотров
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
для настоящих денег должна быть отдельная таблица, ее синхронизировать со статами платежных систем,
со временем посмотрите на расхождения ))

то же и по выводам - или в эту первую, или еще в одну

в остальном - нормально, почаще только реплицируйте/архивируйте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы