Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • AUTIS Wiki AUTIS 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
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • AUTIS
  • AUTIS WikiAUTIS Wiki
  • Wiki
  • banco_dados

Last edited by Douglas Paz Jun 10, 2022
Page history

banco_dados

Home Gerência Processo Design/Mockups Configuração Arquitetura Código Banco de Dados Utilização

Banco de Dados

Descrição

Antes de iniciar a modelagem do banco de dados do projeto, foi realizado um estudo do contexto da equipe e das tecnologias possíveis que poderiam ser utilizadas. Em primeiro lugar, foi feita uma enquete com todos os integrantes do time a respeito de seus conhecimentos técnicos, incluindo conhecimentos sobre banco de dados. Com base nos resultados dessa enquete, percebeu-se que seria mais adequado, quando se tratando da curva de aprendizado, utilizar um banco de dados relacional, uma vez que este tipo de tecnologia é algo abordado nas disciplinas do curso de Engenharia de Software.

Além disso, durante os encontros síncronos da equipe, foram discutidas as duas possibilidades de banco de dados (relacional e não-relacional), e a equipe chegou à conclusão de que o modelo relacional seria o ideal para este projeto, tendo em vista que existem muitas relações diretas entre as entidades e que os dados não se repetem com frequência. Assim, optou-se por utilizar o PostgreSQL, pois este é um banco de simples utilização e para o qual existe bastante material didático disponível.

Sumário

  • Modelagem
    • Esquema Conceitual
    • Esquema Lógico
  • Implementação
    • Knex

Modelagem

Esquema Conceitual

Esquema Lógico

Implementação

Knex

Para a interação com o banco de dados, optou-se por utilizar o Knex como query builder, de forma a tornar o código menos dependente de um banco de dados específico e a facilitar as consultas e alterações no esquema do banco de dados.

Migrations com Knex

No projeto são utilizadas migrations para auxiliar no versionamento das alterações no esquema do banco de dados que são feitas. Para cada uma dessas alterações (ex.: criação de nova tabela ou inserção em um tabela), deve ser criado um arquivo de migration a partir de um dos comandos abaixo:

npx knex migrate:make nome_da_migration -x ts

Neste arquivo, estarão criados por padrão dois métodos vazios: up e down. O método up é executado para aplicar esta atualização no esquema do banco, enquanto o método down é executado para desfazer esta atualização, retornando para uma versão anterior do esquema. Assim, seguindo o exemplo da nova tabela, no método up deve ser construída uma sentença para criar esta tabela, enquanto o método down seria utilizado para remover esta tabela.

Para atualizar o banco de dados a partir das migrations, execute um dos dois comandos abaixo.

npx knex migrate:latest

Materiais para estudos sobre Knex

  • http://knexjs.org/
  • https://devhints.io/knex

Configurando o banco de dados

No projeto, a instância PostgreSQL é executada em um container Docker, em um banco de dados chamado "autis". Para criar este container e executar o banco em um ambiente de desenvolvimento (localmente) ou em um ambiente de homologação, bem como para derrubar este container, basta realizar os passos abaixo:

  • Certificar que você possui o Docker instalado:
    • Windows: https://docs.docker.com/desktop/windows/install/
    • Linux: https://docs.docker.com/engine/install/
  • Executar estes scripts presentes no repositório de Backend.

Além disso, para visualizar as tabelas do banco de dados, recomenda-se utilizar um cliente SQL tal como o DBeaver Community ou o Beekeeper Studio e se conectar ao banco.

Clone repository
  • Instalação
  • Retro
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design_mockups
  • escopo
  • gerencia
  • gerencia_sprint_0
  • gerencia_sprint_1
  • gerencia_sprint_2
View All Pages