Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W 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
  • Lobo-guará
  • Wiki
  • Wiki
  • Banco de Dados

Last edited by Luis Felipe Copetti Rossi Jun 18, 2025
Page history

Banco de Dados

Home Escopo e Cronograma Processo Design/Mockups Configuração Arquitetura Infra Código BD

Banco de Dados Postgres

O projeto Lobo-Guará utiliza o PostgreSQL como sistema gerenciador de banco de dados.

O PostgreSQL é um banco de dados relacional robusto, confiável e amplamente utilizado em aplicações que exigem consistência, integridade e suporte a operações complexas. Ele oferece recursos avançados como controle de concorrência multiversão (MVCC), suporte a transações ACID, extensibilidade com funções e tipos personalizados, além de boa performance em ambientes de produção com grande volume de dados

Entidades

users

Tabela que armazena os dados de todos os usuários da plataforma, incluindo refugiados, administradores e representantes de instituições.

Campo Tipo Descrição
id String Identificador único do usuário
name String Nome completo
email String E-mail
password String Senha (criptografada)
phone String Telefone
city String Cidade
state String Estado
language LanguageEnum Idioma preferido
created_at DateTime Data de criação
deleted_at DateTime Data de exclusão (soft delete)
updated_at DateTime Última atualização
last_login DateTime Último login
role RoleEnum Papel na plataforma
refugie Refugie Objeto com os dados de refugiado (se houver)
institution Institution Objeto com os dados da instituição (se houver)
admin Admin Objeto com os dados de admin (se houver)
topics Topic[] Lista de tópicos criados pelo usuário
messages Message[] Lista de mensagens criadas pelo usuário
auth_tokens AuthToken[] Lista de tokens de autenticação do usuário
TwoFactor TwoFactor Configuração de autenticação em duas etapas

RoleEnum

  • ADMIN
  • REFUGIE
  • INSTITUTION

LanguageEnum

  • PORTUGUESE
  • ENGLISH
  • SPANISH
  • FRENCH

refugies

Contém informações específicas de usuários com papel de refugiado.

Campo Tipo Descrição
id String Identificador do refugiado
userId String Referência à tabela users
user User Objeto com os dados do usuário relacionado

institutions

Instituições que oferecem apoio ou oportunidades a refugiados.

Campo Tipo Descrição
id String Identificador da instituição
cnpj String CNPJ da organização
userId String Referência ao usuário responsável
status InstitutionStatusEnum Situação da instituição
user User Objeto com os dados do usuário relacionado

InstitutionStatusEnum

  • WAITING
  • ACTIVE
  • INACTIVE

admins

Armazena usuários com papel administrativo no sistema.

Campo Tipo Descrição
id String Identificador do admin
userId String Referência à tabela users
user User Objeto com os dados do usuário relacionado

subjects

Assuntos gerais da comunidade, usados como categorias nos tópicos.

Campo Tipo Descrição
id String Identificador
name varchar(16) Nome do assunto
description varchar(256) Descrição do assunto
created_at DateTime Data de criação do assunto
topics Topic[] Lista de tópicos vinculados

topics

Tópicos de discussão criados por usuários.

Campo Tipo Descrição
id String Identificador do tópico
title String Título do tópico
subject_id String Referência ao assunto
author_id String Usuário criador
description varchar(1000) Conteúdo do tópico
views integer Quantidade de visualizações
subject Subject Objeto com os dados do assunto relacionado
author User Objeto com os dados do autor
created_at DateTime Data de criação
updated_at DateTime Última atualização
deleted_at DateTime Data de exclusão
is_deleted Boolean Indicador lógico de exclusão

messages

Mensagens em tópicos, podendo ser respostas a outras mensagens.

Campo Tipo Descrição
id String Identificador da mensagem
topic_id String Referência ao tópico
parent_id String Mensagem pai (para replies)
author_id String Autor da mensagem
content varchar(1000) Texto da mensagem
creation_at DateTime Data e hora de criação
nmb_likes integer Número de curtidas
image_url String URL de imagem opcional
deleted Boolean Indicador lógico de exclusão
deleted_at DateTime Data de exclusão (soft delete)
topic Topic Objeto com os dados do tópico
parent Message? Objeto da mensagem pai (se houver)
children Message[] Lista de respostas desta mensagem

auth_tokens

Tokens de autenticação utilizados para operações específicas.

Campo Tipo Descrição
id String Identificador
token String Valor do token
user_id String Referência ao usuário
type TokenTypeEnum Tipo do token
expires_at DateTime Expiração
created_at DateTime Data de criação
used_at DateTime Data de uso
validated Boolean Indica se o token já foi validado
user User Objeto com os dados do usuário

TokenTypeEnum

  • PASSWORD_RESET
  • EMAIL_VERIFICATION
  • ACCOUNT_ACTIVATION

help_centers

Centros de apoio geográficos cadastrados na plataforma.

Campo Tipo Descrição
id String Identificador único do centro
name String Nome do centro (único)
latitude Float Latitude geográfica
longitude Float Longitude geográfica
resume String Descrição resumida do centro
created_at DateTime Data de criação do registro
updated_at DateTime Data da última atualização
deleted_at DateTime Data de exclusão (soft delete)

two_factor

Dados de autenticação em dois fatores.

Campo Tipo Descrição
id String Identificador do registro
user_id String Referência ao usuário (users.id)
code String Código de autenticação
created_at DateTime Data de criação
expires_at DateTime Data de expiração automática (5 minutos)
deleted_at DateTime Data de exclusão (soft delete)
user User Objeto com os dados do usuário

Relacionamentos

  • Um usuário pode ser um refugiado, instituição ou administrador, dependendo do valor do campo role (relacionamentos 1:1 via Refugie, Institution ou Admin).
  • Um usuário pode criar vários tópicos (User.topics → Topic.author_id).
  • Um usuário pode criar várias mensagens (User.messages → Message.author_id).
  • Um usuário pode ter múltiplos tokens de autenticação (User.authTokens → AuthToken.user_id).
  • Um usuário pode ter uma configuração de autenticação em duas etapas (User.TwoFactor → TwoFactor.user_id).
  • A tabela refugies se relaciona 1:1 com users.
  • A tabela institutions também possui um relacionamento 1:1 com users, indicando o representante da instituição.
  • A tabela admins relaciona administradores a usuários.
  • Um assunto (subject) pode possuir vários tópicos (Topic.subject_id).
  • Um tópico pode ter várias mensagens (Message.topic_id).
  • Uma mensagem pode ser resposta a outra mensagem (Message.parent_id), criando um relacionamento hierárquico (replies).

Untitled

Clone repository
  • Arquitetura do Projeto
  • Banco de Dados
  • Configuração do Ambiente
  • Código
  • Escopo e Cronograma
  • Processos
  • codigo
  • design
    • mockups
  • Home
  • mockups