Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • P Projeto Rivi 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
  • Projeto RIVI
  • Projeto Rivi Wiki
  • Wiki
  • banco_dados

Last edited by Giovanni Gonçalves Migon Nov 16, 2022
Page history
This is an old version of this page. You can view the most recent version or browse the history.

banco_dados

  Início   Cronograma Procedimentos Design_de_Telas Configuração Arquitetura Banco_de_Dados Qualidade Instruções_de_Uso

Banco de Dados

Neste projeto, estamos utilizando o banco de dados MongoDB, sendo um dos mais conhecidos e utilizados banco de dados não relacional. Este banco de dados provê uma boa escalabilidade, flexibilidade, um bom desempenho, com consultas fáceis e simples.

Sumário

  • Motivação
  • Modelagem
    • Esquema Conceitual
    • Esquema Lógico
  • Implementação
    • Schemas
  • Configurando o Mongo Atlas

Motivação

No início do projeto, foi pensado em utilizar o banco de dados MySQL, um banco de dados relacional do qual poderia ser aplicado ao projeto. Por conta de algumas constatações, optamos por fazer uso do banco de dados MongoDB. Algumas das motivações que propiciaram esta mudança foram:

  • Neste projeto, não há a necessidade de se utilizar garantias ACID;
  • Os dados podem ser expressos sem relação;
  • A segurança de gravação não é crítica;
  • A seleção dos dados é simples, e tende a ser simples;
  • É provável que acelere e simplifique o processo de desenvolvimento.

Modelagem

As principais entidades do banco são: Pesquisador e Usuário.

A entidade Tag está relacionada com todas as demais entidades, ela é responsável por organizar e categorizar as demais entidades por área de estudo e conhecimento.

Esquema Conceitual

ModeloConceitual_Ajustado

Esquema Lógico

ModeloLogico_Ajustado

Implementação

Pela versatilidade do MongoDB, não é necessário criar as Tables ou Collections diretamente no banco de dados.

Podemos implementar arquivos Schemas, que são os arquivos dos quais contém toda a lógica necessária para que o banco de dados reconheça o formato dos dados e armazene-os de forma correta. Estes arquivos são gerados dentro do projeto de backend, para que, a cada vez que houver uma comunicação do backend com o banco de dados, o MongoDB receba as informações necessárias e saiba a maneira correta de operação.

Schemas

model Usuario {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  nome String
  username String @unique
  email String @unique
  senha String
  genero String
  dataNasc DateTime 
  notificacao Boolean
  interesse String[]
  questionariosIds String[] @db.ObjectId
  questionarios Questionario[] @relation(fields: [questionariosIds], references: [id])
  tags String[]
}

model Questionario {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  titulo String
  termo String
  descricao String
  link String
  calculo String
  usuariosIds String[] @db.ObjectId
  usuarios Usuario[] @relation(fields: [usuariosIds], references: [id])
  tags String[]
}

model Tag {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  nome String @unique
  descricao String
}

model Projeto {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  titulo String
  descricao String
  estado String
  tag String[]
  pesquisadoresIds String[] @db.ObjectId
  pesquisadores Pesquisador[] @relation(fields: [pesquisadoresIds], references: [id])
}

model Pesquisador {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  nome String
  email String @unique
  descricao String
  afiliacao String
  tag String[]
  foto String
  contatos Contato[]
  projetosIds String[] @db.ObjectId
  projetos Projeto[] @relation(fields: [projetosIds], references: [id])
  artigosIds String[] @db.ObjectId
  artigos Artigo[] @relation(fields: [artigosIds], references: [id])
}

model Artigo {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  doi Int
  titulo String
  descricao String
  citacao String
  afiliacao String
  link String
  tag String[]
  pesquisadoresIds String[] @db.ObjectId  
  pesquisadores Pesquisador[] @relation(fields: [pesquisadoresIds], references: [id])
}

type Contato {
  nome String
  link String
}
Clone repository
  • Gerência
  • Instalação
  • Retro
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design_mockups
  • escopo
  • estudos
  • gerencia
  • Home
View All Pages