Здравствуйте.
Нужны транзакции в проекте. Транзакции будут :
- зачисление на счет пользователя с внешнего источника;
- зачисление с внутренних источников (бонусы, баллы и т.д.);
- зачисления и списание, в общем - переводы средств между счетами польщователей;
- вывод средств на внешний счет.
Вопрос в том, хватит ли одной таблицы ? Пока в голову приходят следующие поля:
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" и т.д.
--
Нужен совет по правильной организации.