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
This is an old version of this page. You can view the most recent version or browse the history.

banco_dados

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

Banco de Dados

Descrição

Antes de iniciar a modelagem do banco de bancos 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
    • Schemas
    • Postgrees

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), deve ser criado um arquivo de migration a partir de um dos comandos abaixo:

npx knex migrate:make nome_da_migration -x ts
npm run create-migration nome_da_migration

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
npm run update-migrations

Materiais para estudos sobre Knex

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

Schemas

TBD

Postgrees

TBD

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