Já que tu já manja dos paranauês, chegou a hora de testar teus conhecimentos num projeto real. Normalmente, bancos de dados de projetos reais são divididos em:
- pequenos - até 100 tabelas
- médios - de 100 a 1000 tabelas
- grandes - acima de 1000 tabelas.
Sem experiência, é difícil imaginar pra que serve 100+ tabelas. Então hoje vou te dar essa oportunidade :)
Vou te passar um banco de dados relacional realista pra uma plataforma de e-commerce (Marketplace). O banco tá dividido em esquemas, cada um cuidando de um domínio específico: usuários, produtos, pedidos, logística, marketing, suporte e por aí vai.
O projeto tem 109 tabelas, separadas em 11 esquemas. Cada tabela tem suas foreign keys e já tá preparada pra crescer usando tabelas de referência e tabelas de sistema.
Estrutura do banco de dados
Esquema user — Usuários e atividade
O esquema user tem tabelas de contas, perfis, informações de contato, logs de login, avaliações e conexões sociais.
Exemplos de tabelas:
account— dados de cadastroprofile— informações pessoaisreview,comment— avaliações e comentários
Esquema product — Produtos e catálogo
O esquema product guarda descrições dos produtos, variações, atributos, imagens, status e histórico de mudanças.
Exemplos de tabelas:
product,variant— produtos e modificaçõesattribute,tag— características e tagssupplier,composition— fornecedores e composição
Esquema order — Pedidos e carrinhos
Tem o esquema pra criar e acompanhar pedidos, status, devoluções e pagamentos.
Exemplos de tabelas:
order,order_itemstatus_log,return,cancellationinvoice,discount
Esquema logistics — Estoques, entrega, rotas
Gerencia estoque, movimentações, entregas e rotas.
Exemplos de tabelas:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
Esquema payment — Pagamentos e transações
Guarda info sobre sistemas de pagamento, transações, carteiras e reembolsos.
Exemplos de tabelas:
payment,transaction,refundwallet,wallet_transactiongateway,method
Esquema marketing — Promoções e anúncios
Tem tabelas de cupons, banners, programas de indicação e produtos em destaque.
Exemplos de tabelas:
campaign,promo_code,discountreferral_program,featured_product
Esquema support — Suporte técnico
Sistema de tickets, mensagens, status e avaliações do suporte.
Exemplos de tabelas:
ticket,ticket_message,ticket_statusagent,feedback
Esquema analytics — Métricas e comportamento
Monitoramento de sessões, ações dos usuários, conversões e métricas.
Exemplos de tabelas:
event,session,click,page_viewgoal,metric_snapshot
Esquema admin — Administração e gestão
Tabelas de admins, papéis, logs de auditoria e configurações do sistema.
Exemplos de tabelas:
admin,admin_roleaudit_log,setting,api_token
Esquema content — Páginas estáticas e blocos
Conteúdo pra CMS: páginas, menus, traduções e versões.
Exemplos de tabelas:
page,block,menu,translation,version
Esquema ref — Referências e meta-tabelas
Tipos, status, países, motivos de devolução e outros.
Exemplos de tabelas:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
Criando as tabelas
Pra facilitar tua vida, vou te passar scripts prontos pra criar todas as tabelas do banco.
Tu só precisa baixar o script SQL com o código e rodar ele.
- Crie uma base de dados vazia no PostgreSQL.
- Descarregue o esquema.
- Importe a estrutura da base de dados:
psql -U postgres -d marketplace_db < init_schema.sql
Carregamento de dados
Também os dados para todas as tabelas.
GO TO FULL VERSION