CodeGym /Cursos /SQL SELF /Marketplace Database Architecture

Marketplace Database Architecture

SQL SELF
Nível 61 , Lição 0
Disponível

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 cadastro
  • profile — informações pessoais
  • review, 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ções
  • attribute, tag — características e tags
  • supplier, 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_item
  • status_log, return, cancellation
  • invoice, discount

Esquema logistics — Estoques, entrega, rotas

Gerencia estoque, movimentações, entregas e rotas.

Exemplos de tabelas:

  • warehouse, inventory, transfer
  • shipping_method, package
  • driver, carrier, route

Esquema payment — Pagamentos e transações

Guarda info sobre sistemas de pagamento, transações, carteiras e reembolsos.

Exemplos de tabelas:

  • payment, transaction, refund
  • wallet, wallet_transaction
  • gateway, 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, discount
  • referral_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_status
  • agent, 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_view
  • goal, 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_role
  • audit_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_status
  • refund_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.

  1. Crie uma base de dados vazia no PostgreSQL.
  2. Descarregue o esquema.
  3. 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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION