Schema do Banco de Dados

🗄️ Visão Geral do Schema

O Payment Gateway utiliza um schema relacional otimizado para performance, auditoria e compliance, suportando SQLite (desenvolvimento) e PostgreSQL (produção).

📊 Diagrama ERD

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│    merchants    │    │      users      │    │     payments    │
│─────────────────│    │─────────────────│    │─────────────────│
│ id (PK)         │◄───┤ id (PK)         │    │ id (PK)         │
│ name            │    │ merchant_id (FK)│    │ merchant_id (FK)│◄──┐
│ email           │    │ email           │    │ user_id (FK)    │   │
│ status          │    │ role            │    │ amount          │   │
│ created_at      │    │ created_at      │    │ currency        │   │
│ updated_at      │    │ updated_at      │    │ status          │   │
└─────────────────┘    └─────────────────┘    │ provider        │   │
                                              │ created_at      │   │
                                              │ updated_at      │   │
                                              └─────────────────┘   │
                                                        │           │
┌─────────────────┐    ┌─────────────────┐             │           │
│  transactions   │    │  webhooks_log   │             │           │
│─────────────────│    │─────────────────│             │           │
│ id (PK)         │    │ id (PK)         │             │           │
│ payment_id (FK) │◄───┤ payment_id (FK) │◄────────────┘           │
│ provider_tx_id  │    │ provider        │                         │
│ status          │    │ event_type      │                         │
│ amount          │    │ payload         │                         │
│ fees            │    │ signature       │                         │
│ metadata        │    │ status          │                         │
│ created_at      │    │ created_at      │                         │
└─────────────────┘    └─────────────────┘                         │

┌─────────────────┐    ┌─────────────────┐                         │
│   audit_log     │    │ payment_methods │                         │
│─────────────────│    │─────────────────│                         │
│ id (PK)         │    │ id (PK)         │                         │
│ table_name      │    │ name            │                         │
│ record_id       │    │ type            │                         │
│ action          │    │ provider        │                         │
│ old_values      │    │ enabled         │                         │
│ new_values      │    │ config          │                         │
│ user_id         │    │ created_at      │                         │
│ created_at      │    └─────────────────┘                         │
└─────────────────┘                                                │

┌─────────────────┐                                                │
│ refresh_tokens  │                                                │
│─────────────────│                                                │
│ id (PK)         │                                                │
│ user_id (FK)    │◄───────────────────────────────────────────────┘
│ token_hash      │
│ expires_at      │
│ revoked         │
│ created_at      │
└─────────────────┘

📋 Tabelas Principais

1. merchants

2. users

3. payments

4. transactions

5. webhooks_log

6. audit_log

🔧 Triggers para Auditoria

Trigger para payments

Trigger para updated_at automático

📊 Views para Analytics

Payment Analytics View

Provider Performance View

🔍 Consultas Úteis

Pagamentos por Status

Top Merchants por Volume

Provider Success Rate

🚀 Otimizações de Performance

Particionamento por Data (PostgreSQL)

Indexes Compostos

📝 Políticas de Retenção

Cleanup de Dados Antigos


Última atualização: December 2024

Last updated

Was this helpful?