Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • wiki wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Plataforma de Doações para o Pão dos Pobres
  • wikiwiki
  • Wiki
  • Banco de Dados

Last edited by Bernardo Possani Kirsch Oct 12, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Banco de Dados

Home Escopo e Cronograma Git Workflow Design e Mockups Configuração Arquitetura Front-End Back-End BD Qualidade Gerência

Banco de Dados – Plataforma de Doações

Visão Geral

O banco de dados foi projetado para suportar a plataforma de campanhas de arrecadação, contemplando usuários (administradores e doadores), endereços, campanhas, doações, pagamentos e eventos.


Tecnologias

Para a implementação do banco, a equipe decidiu por utilizar PostgreSQL junto com ORM Prisma, devida à familiaridade do time com as mesmas, além da fácil integração entre as duas.

O PostgreSQL é um sistema de gerenciamento de banco de dados relacional (SGBD) de código aberto. Ele é amplamente reconhecido por sua confiabilidade e escalabilidade, oferecendo suporte robusto a transações e garantindo alta consistência de dados. Além disso, permite o armazenamento de dados complexos, como JSON, ARRAY e UUID. Sua integridade referencial é forte, assegurando a consistência e o relacionamento adequado entre as tabelas. O PostgreSQL também se destaca por sua excelente compatibilidade com sistemas de produção, sendo uma escolha ideal para projetos que exigem operações complexas e um desempenho elevado, independentemente do porte da aplicação.

O Prisma é uma ferramenta ORM (Object-Relational Mapping) avançada para Node.js (assim como NestJS) e TypeScript, projetada para simplificar a interação entre a aplicação e o banco de dados. Ele gera um cliente fortemente tipado a partir de um arquivo de esquema (schema.prisma), proporcionando consultas seguras e fáceis de entender. Além disso, o Prisma oferece suporte a migrações versionadas com histórico, introspecção e um modelo declarativo, o que melhora o fluxo de desenvolvimento e facilita a manutenção do banco de dados. Com isso, o Prisma contribui para um desenvolvimento backend mais ágil, reduzindo a possibilidade de erros em consultas e potencializando a produtividade de equipes que utilizam TypeScript.


Entidades e Estrutura

user_account

  • id (UUID, PK)
  • full_name, email (único, obrigatório)
  • password_hash

password_reset_token

  • id (UUID, PK)
  • token, created_at, expires_at
  • user_id (FK → user_account.id)

admin

  • user_id (PK, FK → user_account.id)
  • root (boolean, indica superadmin)

donor

  • user_id (PK, FK → user_account.id)
  • tax_id (CPF, único)
  • birth_date, gender, phone

address

  • id (UUID, PK)
  • state, city, district, street, number, complement

donor_address

  • PK composta (donor_id, address_id)
  • is_primary (boolean)
  • addr_type (ex.: residencial, comercial)

campaign

  • id (UUID, PK)
  • title, description, target_amount, current_amount, start_date, end_date, image_url
  • status (campaign_status)
  • admin_id (FK → admin.user_id)
  • created_by (FK → user_account.id)

donation

  • id (UUID, PK)
  • donation_type
  • amount, periodicity,
  • donor_id (FK → donor.user_id)
  • campaign_id (FK → campaign.id)
  • created_at (timestamptz)

payment

  • id (UUID, PK)
  • method (payment_method)
  • status (payment_status)
  • amount, paid_at
  • donation_id (FK → donation.id)

events

  • id (UUID, PK)
  • title, description, date_start, date_end, location, url, created_at, updated_at

news

  • id (UUID, PK)
  • title, description, date, location, url, created_at, updated_at

Índices

  • donor_address(address_id)
  • campaign(admin_id)
  • donation(donor_id)
  • donation(campaign_id)
  • payment(donation_id)

Observações

  • Constraints de ON DELETE foram configuradas conforme regras de negócio.
  • Doações preservam histórico mesmo se a campanha for excluída.
  • Defaults: uuid_generate_v4() para IDs e NOW() para timestamps.

Diagrama Entidade-Relacionamento

diagramaBD_pao_dos_pobres

O diagrama representa as principais entidades, atributos e relacionamentos do sistema, incluindo os enums campaign_status, payment_status e payment_method.

Clone repository
  • Arquitetura
  • BackEnd
  • Banco de Dados
  • Configuração
  • Design e Mockups
  • Escopo e Cronograma
  • FrontEnd
  • Gerência
  • Git Workflow
  • Qualidade
  • Home