Essa é mais uma pergunta que requer feedback. Estou projetando um banco de dados que lida com vários gateways de pagamento. Um gateway de pagamento geralmente requer uma tabela para obter detalhes do pedido antes de efetuar o pagamento (isso é comum para todos os PGs) e uma tabela para detalhes da transação, para armazenar a resposta após o pagamento.
Agora, para lidar com vários gateways de pagamento, posso manter uma única tabela de transações, preenchendo-a com todos os campos disponíveis em todos os gateways de pagamento e um campo que diz de qual PG é essa linha;
Ou, posso criar tabelas de transação separadas para cada um dos PG com prefixo como paypal_
ou bank_
etc, cada um com os campos de que precisam.
Só não tenho certeza de qual é a melhor maneira de fazê-lo. Também é necessário aprendê-lo para cenários semelhantes que eu possa encontrar no futuro.
fonte
paypal_transaction_id
,bank_transaction_id
etc. Nós não têm muitas gateways de pagamento, por isso funcionou para nós. Pode não funcionar com aqueles que apoiam muitos PGs.Respostas:
Depende da diferença entre os dados entre os tipos de pagamento.
Para os sites que eu apoio no trabalho, temos uma tabela que armazena dados para todos os tipos de pagamento. Isso funciona para nós porque nossos tipos de pagamento são basicamente quatro tipos de cartões de crédito e pedidos de compra da empresa. A maioria dos nossos clientes paga com cartão de crédito, portanto, não há muitos desvios nos dados. Obviamente, as consultas para esses clientes de cartão de crédito sempre geram valores NULL no campo PONumber. Da mesma forma, as consultas para clientes de PO geram NULLs em todos os campos relacionados ao cartão de crédito.
Se houver muitos campos diferentes nos seus dados, você pode tentar uma tabela de transações mestre com tabelas individuais para cada gateway de pagamento. Cada tabela de tipo de gateway de pagamento teria uma chave estrangeira de transaction_id, que seria vinculada novamente à tabela de transações mestre.
Por outro lado, se todos os tipos de gateway de pagamento tiverem campos semelhantes, eu ficaria com uma tabela de transações.
fonte