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

Banco de Dados · Changes

Page history
Altera apelino na sidebar. authored Apr 10, 2025 by Felipe Conzatti Frison's avatar Felipe Conzatti Frison
Show whitespace changes
Inline Side-by-side
Banco-de-Dados.md 0 → 100644
View page @ 2209e5c4
<table>
<tr>
<th> [Home](home) </th>
<th> [Escopo e Cronograma](escopo e cronograma) </th>
<th> [Processo](Processos) </th>
<th> [Design/Mockups](design/mockups) </th>
<th> [Configuração](Configuração do Ambiente) </th>
<th> [Arquitetura](Arquitetura do Projeto) </th>
<th> [Infra](infraestrutura) </th>
<th> [Código](codigo) </th>
<th> [BD](Banco de Dados) </th>
</tr>
</table>
# Modelo de Dados
Abaixo, segue o modelo de dados proposto para o aplicativo.
## 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 |
| role | RoleEnum | Papel na plataforma |
#### `RoleEnum`
- `ADMIN`
- `REFUGIE`
- `INSTITUTION`
#### `LanguageEnum`
- `PORTUGUESE`
- `ENGLISH`
- `SPANISH`
---
### `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` |
---
### `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 |
| latitude | Float | Latitude geográfica |
| longitude | Float | Longitude geográfica |
| userId | String | Referência ao usuário responsável |
| status | InstitutionStatusEnum | Situação da instituição |
#### `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`|
---
### `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 |
---
### `tags`
Etiquetas para classificar e organizar assuntos.
| Campo | Tipo | Descrição |
|------------|--------------|-----------------------------------|
| id | String | Identificador |
| subject_id | String | Referência à tabela `subjects` |
| name | varchar(16) | Nome da tag |
---
### `topics`
Tópicos de discussão criados por usuários.
| Campo | Tipo | Descrição |
|-------------|----------------|-----------------------------------|
| id | String | Identificador 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 |
---
### `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_dt | timestamp | Data e hora de criação |
| nmb_likes | integer | Número de curtidas |
---
### `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 |
#### `TokenTypeEnum`
- `PASSWORD_RESET`
- `EMAIL_VERIFICATION`
- `ACCOUNT_ACTIVATION`
---
## Relacionamentos
- Um **usuário** pode ser um **refugiado**, **instituição** ou **administrador**, dependendo do valor do campo `role`.
- 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árias **tags** e vários **tópicos**.
- Um **tópico** é criado por um usuário e pertence a um **assunto**.
- Uma **mensagem** pertence a um **tópico** e pode ser uma resposta a outra mensagem.
- Um **usuário** pode possuir múltiplos **tokens de autenticação** para diferentes finalidades.
![Ages-lobo-guara-alt](uploads/05b9eba7557fe61284f301c2cfe57057/Ages-lobo-guara-alt.png)
\ No newline at end of file
Clone repository
  • Arquitetura do Projeto
  • Banco de Dados
  • Configuração do Ambiente
  • Código
  • Escopo e Cronograma
  • Processos
  • codigo
  • design
    • mockups
  • Home
  • mockups