Это больше вопрос, который требует обратной связи. Я разрабатываю базу данных, которая обрабатывает несколько платежных шлюзов. Платежному шлюзу в основном требуется таблица для деталей заказа до совершения платежа (это является общим для всех PG) и таблица для деталей транзакции для хранения ответа после совершения платежа.
Теперь для обработки нескольких платежных шлюзов я могу либо сохранить одну таблицу транзакций, заполнив ее всеми полями, доступными для всех платежных шлюзов, и полем, в котором указано, из какого PG эта строка;
Или я могу создать отдельные таблицы транзакций для каждого PG с префиксом вроде paypal_
или bank_
т. Д., Каждое из которых имеет поля, необходимые для каждого из них.
Я просто не уверен, что является наиболее оптимальным способом сделать это. Также необходимо изучить его для подобных сценариев, с которыми я могу столкнуться в будущем.
источник
paypal_transaction_id
иbank_transaction_id
т. Д. У нас не было слишком много платежных шлюзов, поэтому у нас это работало. Может не работать с теми, кто поддерживает много PG.Ответы:
Это зависит от того, насколько различаются данные между типами платежей.
Для сайтов, которые я поддерживаю на работе, у нас есть одна таблица, в которой хранятся данные для всех типов платежей. Это работает для нас, потому что наши виды оплаты в основном 4 вида кредитных карт и заказ на покупку компании. Большинство наших клиентов расплачиваются кредитными картами, поэтому в данных нет больших отклонений. Конечно, запросы для тех клиентов кредитных карт всегда дают значения NULL в поле PONumber. Аналогично, запросы для клиентов ПО дают значения NULL во всех полях, связанных с кредитной картой.
Если в ваших данных много разных полей, вы можете попробовать одну основную таблицу транзакций с отдельными таблицами для каждого платежного шлюза. Каждая таблица типов платежного шлюза будет иметь внешний ключ Transaction_id, который будет ссылаться на основную таблицу транзакций.
С другой стороны, если все типы ваших платежных шлюзов имеют одинаковые поля, я бы придерживался одной таблицы транзакций.
источник