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
  • Comunidade Universitaria
  • wiki
  • Wiki
  • banco_dados

You need to sign in or sign up before continuing.
Last edited by Filipe Oliveira Nov 26, 2023
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

Utilização

Documentação do Banco de dados

Banco de Dados PostgreSQL 12 e ORM Sequelize

Neste projeto, utilizamos o PostgreSQL 12 como nosso sistema de gerenciamento de banco de dados. O PostgreSQL é um sistema de banco de dados relacional de código aberto altamente confiável e poderoso, que oferece suporte a uma variedade de recursos avançados, como transações, indexação eficiente e consultas complexas.

Motivos para Escolher o PostgreSQL 12

image

  • Desempenho: O PostgreSQL é conhecido por seu desempenho excepcional, especialmente quando se trata de consultas complexas e grandes conjuntos de dados.
  • Confiabilidade: É altamente confiável, com suporte a transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade) para garantir a integridade dos dados.
  • Escalabilidade: O PostgreSQL é escalável e pode lidar com cargas de trabalho crescentes à medida que o projeto se expande.

Sequelize como ORM

image

Para facilitar a comunicação com o banco de dados PostgreSQL 12 em nosso projeto Nest.js, utilizamos o ORM (Object-Relational Mapping) Sequelize. O Sequelize é um ORM popular para Node.js que fornece uma maneira fácil e eficaz de interagir com o banco de dados usando JavaScript ou TypeScript.

Principais vantagens do Sequelize:

  • Abstração de Banco de Dados: O Sequelize abstrai as complexidades do SQL, permitindo que os desenvolvedores usem código JavaScript/TypeScript para criar, consultar e manipular tabelas de banco de dados.
  • Modelos de Dados: Podemos definir modelos de dados em JavaScript/TypeScript que correspondem às tabelas do banco de dados, tornando a manutenção e o desenvolvimento mais simples e organizados.
  • Migrações: O Sequelize oferece suporte a migrações de banco de dados, o que facilita a atualização do esquema do banco de dados à medida que o projeto evolui.

Modelagem do banco (Sprint 1)

Este diagrama é a versão inicial do banco de dados, representando a estrutura fundamental sobre a qual o sistema de gerenciamento de usuários, comunidades e eventos estava sendo construído. À medida que o projeto evolui, é comum que ajustes sejam feitos para refinar a estrutura, adicionar novos recursos ou otimizar o desempenho.

Conforme o desenvolvimento prossegue, podem ser feitas alterações como:

  • Adicionar novas tabelas: Por exemplo, se você decidir que os eventos devem ter subcategorias, uma nova tabela de "Subcategorias" poderia ser adicionada.

  • Modificar tabelas existentes: Você pode precisar de mais informações sobre os usuários, então novos campos podem ser adicionados à tabela "Usuário".

  • Refinar relacionamentos: Talvez você perceba que a relação entre usuários e comunidades é mais complexa e precise de uma nova tabela intermediária para melhor descrever essas conexões.

  • Otimização para desempenho: À medida que mais dados são adicionados, algumas estruturas podem ser alteradas para tornar as consultas mais rápidas.

O processo de desenvolvimento e aprimoramento é iterativo e contínuo, garantindo que o banco de dados atenda às necessidades do sistema e proporcione uma experiência suave e eficiente para os usuários finais.

Modelagem:

image

Breve explicação da modelagem:

  • Usuário (User): Cada usuário tem informações como nome, e-mail, senha e uma associação a uma comunidade. Imagine isso como o perfil de uma pessoa em um site.

  • Comunidade (Community): Este é uma categoria que os usuários devem fazer parte de pelo menos 1. Por exemplo, uma comunidade pode ser a PUCRS.

  • Eventos (Events): São atividades ou encontros que são criados no sistema. Cada evento tem um título, descrição, data, endereço, local, uma URL para uma foto e uma referência a quem criou o evento.

  • Eventos Pagos (PaidEvents): Alguns eventos podem ter um custo associado. Esta parte do banco de dados guarda informações sobre o preço desses eventos pagos.

  • Tags (Tags): São rótulos ou palavras-chave que podem ser usados para descrever ou categorizar usuários e eventos. Por exemplo, uma etiqueta pode ser "esporte" ou "música".

  • Associação de Usuários e Eventos (UserEvent): Indica quais usuários estão relacionados a quais eventos. Isso é usado, por exemplo, para saber quem se inscreveu em um determinado evento.

  • Associação de Usuários e Tags (UserTags): Mostra quais tags estão associadas a quais usuários. Isso pode ajudar a identificar interesses dos usuários.

  • Associação de Eventos e Tags (EventTags): Da mesma forma, isso mostra quais tags estão associadas a quais eventos.

Modelagem do banco (Sprint 2 e adiante)

Na segunda versão do diagrama, é evidente que o sistema foi expandido e agora inclui uma variedade maior de informações e relações entre elas. Comparando com a versão anterior, aqui estão alguns pontos-chave que foram adicionados ou modificados:

  • Postagens e Comentários (Posts and Comments): Foram introduzidas tabelas para gerenciar postagens e comentários, permitindo que os usuários criem conteúdo e interajam entre si.

  • Curtidas (Likes): Agora é possível registrar curtidas em postagens, adicionando uma camada de interação social.

  • Grupos (Groups): Este é uma categoria que os usuários podem fazer parte de acordo com sua vontade. Por exemplo, um grupo pode ser para jogar Tênis.

  • Ligações entre Grupos (GroupLink): Introduzida uma nova tabela para conectar grupos, o que pode ser usado para criar uma hierarquia ou rede de grupos relacionados.

  • Solicitações de Grupo (GroupRequest): Há uma nova tabela para gerenciar solicitações de adesão a grupos, permitindo um controle sobre quem pode se juntar.

  • Associação de Grupo e Usuário (GroupUser): Esta tabela parece gerenciar a associação de usuários a grupos, com informações sobre quando eles se juntaram.

  • Relações entre Usuários e Eventos (UserEvent): Similar à associação de usuários e eventos da primeira versão, mas agora diretamente conectada à tabela de eventos.

  • Tags para Grupos (TagGroups): Uma nova tabela para associar tags a grupos foi adicionada, permitindo categorizar grupos da mesma maneira que usuários e eventos.

  • Usuário e Comunidade (UserCommunity): Esta nova associação sugere que os usuários podem pertencer a múltiplas comunidades.

image

Link para o banco de dados

Clone repository
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design_mockups
  • dividas_tecnicas
  • escopo
  • Home
  • processo