Как лучше хранить методы выплат?

Реализую массовые выплаты клиентам. Выплаты на банковские карты и электро кошельки. Связь один к одному (пользователь может иметь один метод для выплат). Думаю над схемой бд и есть варианты:

1) Поле number в таблице payment_methods будет использоваться для хранения банковских карт и кошельков. Если нужны будут доп. поля (будет зависеть от поставщика услуг) - делать их null.
2) Создать дополнительно таблицы bank_cards и wallets и связать с payment_methods.

Или может другой способ? Подводных камней не знаю, с выплатами дело не имел.
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Тот самый случай где как раз уместнее просто jsonb.
Для каждой системы будут нужны свои данные, это всё равно у вас будет фабрика в коде для обработки и валидации требований конкретной системы. А поиск по этому json напротив является исключением, а не частой ситуацией.

То есть payment_data: id, user_id, payment_system (enum), data jsonb
В users default_payment FK на payment_data

PS: по моему опыту, лучше сразу предположите что в будущем возможно деление платежа в настраиваемых пользователем пропорциях на несколько кошельков. С задачей такой встречался несколько раз, во всех случаях через несколько лет приходили к задаче "нужно дать возможность пользователю настроить выплаты на несколько кошельков".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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