Добавьте сущность перевода с единым transfer_id и свяжите с ней все проводки. Возврат оформляйте отдельной операцией, ссылающейся на исходный перевод, а не удалением старых записей.
Как изменить модель данных, чтобы однозначно объединить четыре проводки одного перевода и затем одним действием выполнить возврат средств пользователю?
Добавьте сущность перевода с единым transfer_id и свяжите с ней все проводки. Возврат оформляйте отдельной операцией, ссылающейся на исходный перевод, а не удалением старых записей.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Добавьте сущность перевода с единым transfer_id и свяжите с ней все проводки. Возврат оформляйте отдельной операцией, ссылающейся на исходный перевод, а не удалением старых записей.
Для одной БД создавайте компенсирующие проводки атомарно и ограничьте повторный полный возврат уникальным ключом. Сохраняйте валюту, стороны, типы проводок и статус; суммы компенсации должны соответствовать исходным. Если участвует внешний платёжный провайдер, «одно действие» интерфейса запускает процесс со сверкой, а не делает распределённый refund мгновенно атомарным.