Esta es más una pregunta que requiere comentarios. Estoy diseñando una base de datos que maneja múltiples pasarelas de pago. Una pasarela de pago requiere principalmente una tabla para los detalles del pedido antes de realizar el pago (esto es común para todos los PG), y una tabla para los detalles de la transacción, para almacenar la respuesta después de realizar el pago.
Ahora, para manejar múltiples pasarelas de pago, puedo mantener una sola tabla de transacciones, rellenándola con todos los campos disponibles de todas las pasarelas de pago y un campo que dice de qué PG es esa fila;
O bien, puedo crear tablas de transacciones separadas para cada PG con prefijo como paypal_
o bank_
etc., cada uno con los campos que cada uno de ellos necesita.
No estoy seguro de cuál es la forma más óptima de hacerlo. También necesito aprenderlo para escenarios similares que pueda encontrar en el futuro.
fuente
paypal_transaction_id
,bank_transaction_id
etc. No teníamos demasiadas pasarelas de pago, así que funcionó para nosotros. Podría no funcionar con aquellos que admiten muchos PG.Respuestas:
Depende de cuán diferentes sean los datos entre los tipos de pago.
Para los sitios que apoyo en el trabajo, tenemos una tabla que almacena datos para todos los tipos de pago. Eso funciona para nosotros porque nuestros tipos de pago son básicamente 4 tipos de tarjetas de crédito y órdenes de compra de la compañía. La mayoría de nuestros clientes pagan con tarjetas de crédito, por lo que no hay mucha desviación en los datos. Por supuesto, las consultas para esos clientes de tarjetas de crédito siempre arrojan valores NULL en el campo PONumber. Del mismo modo, las consultas para clientes de PO generan NULL en todos los campos relacionados con la tarjeta de crédito.
Si hay muchos campos diferentes en sus datos, puede probar una tabla de transacción maestra con tablas individuales para cada pasarela de pago. Cada tabla de tipo de pasarela de pago tendría una clave externa de transacción_id, que se vincularía de nuevo a la tabla de transacción maestra.
Por otro lado, si todos sus tipos de pasarela de pago tienen campos similares, entonces me quedaría con una tabla de transacciones.
fuente