Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C Cosmos
  • 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
  • Cosmos
  • Cosmos
  • Wiki
  • Banco de Dados

Last edited by Dalton Belman Albeche Nov 18, 2024
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Banco de Dados

Home Escopo Git Workflow Design/Mockups Configuração Arquitetura Gerência BD Qualidade

Sumário

  • Sumário
  • Descrição
  • Modelo e provedor escolhido Texto
  • Diagrama do banco de dados
  • Modelagem do Banco de Dados
    • Tabela User {
    • Tabela Address {
    • Tabela Institution {
    • Tabela Role {
    • Tabela Event {
    • Tabela Project {
    • Tabela Category {
    • Tabela Keyword {
    • Tabela GeneralParameters {
    • Tabela SocialNetwork {
    • Tabela Post {
    • Tabela PostLikes {
    • Tabela PostComments {
    • Tabela ProjectCategory {
    • Tabela EventCategory {
    • Tabela ProjectKeyword {
    • Tabela UsersSocialNetwork {

Descrição

O banco de dados utilizado no projeto Cosmos é baseado no PostgreSQL, um sistema de gerenciamento de banco de dados relacional. Ele oferece uma estrutura robusta para organizar e acessar os dados, garantindo consultas eficientes e escalabilidade para as diversas funcionalidades do projeto. A escolha pelo PostgreSQL foi baseada em sua simplicidade de implementação e na necessidade de gerenciar um número moderado de tabelas.

O Prisma foi utilizado como ORM (Object-Relational Mapping), permitindo a interação com o banco de dados de maneira mais fluida e eficiente, utilizando o Prisma Client para JavaScript. Isso simplifica a manipulação de dados e acelera o desenvolvimento.

  • PostgreSQL

PostgreSQL

O PostgreSQL é uma ferramenta que atua como sistema de gerenciamento de bancos de dados relacionados. Seu foco é permitir implementação da linguagem SQL em estruturas, garantindo um trabalho com os padrões desse tipo de ordenação dos dados. Tem o papel de gerenciar os dados desses bancos de maneira organizada e eficaz, rodando e gravando todas as informações que ficam registradas nesses compartimentos. Por meio desse sistema, usuários podem executar consultas de maneira simples, sem precisar acessar diretamente o banco de dados.

Modelo e provedor escolhido Texto

[Exemplo] Foi decidido utilizar um banco de dados relacional PostgreSQL, uma vez que a aplicação não exigia um grande número de tabelas e buscava-se pela simplicidade na sua implementação.

Diagrama do banco de dados

diagram-export-18-09-2024-18_49_39

Modelagem do Banco de Dados

O banco de dados foi modelado com o objetivo de suportar as principais funcionalidades do sistema, incluindo gerenciamento de usuários, instituições, eventos, projetos e interações sociais, como posts, comentários e curtidas.

Principais Tabelas:

GeneralParameters: Gerencia parâmetros gerais da aplicação, armazenando dados em formato JSON.

Institution: Armazena dados das instituições, incluindo nome, CNPJ, localização geográfica (latitude e longitude) e suas relações com eventos, usuários e projetos.

User: Contém os dados dos usuários, como nome, e-mail, senha e CPF/CNPJ. Cada usuário pode estar associado a uma instituição e a um papel (role) específico.

Address: Armazena os dados de endereço dos usuários.

Role: Define os diferentes papéis que os usuários podem desempenhar dentro da aplicação.

Event: Tabela responsável por armazenar informações de eventos, como título, descrição, data e localização (latitude e longitude).

Project: Armazena os projetos gerenciados pelo sistema, incluindo nome, histórico, propósito, data de início e término.

Category e Keyword: Gerenciam as categorias e palavras-chave associadas a projetos e eventos.

Post, PostLikes e PostComments: Gerenciam as interações sociais, incluindo posts feitos pelos usuários, suas curtidas e comentários.

ProjectCategory, EventCategory e ProjectKeyword: Relações de muitos para muitos entre projetos, eventos, categorias e palavras-chave.

UsersSocialNetwork: Armazena as redes sociais associadas a cada usuário.

Tabela User {

  • id INT pk
  • name TEXT
  • email VARCHAR(255)
  • password VARCHAR(255)
  • phone CHAR(11)
  • cpfcnpj VARCHAR(14)
  • photoURL TEXT
  • blocked BOOLEAN
  • registrarion_number VARCHAR(50)
  • institution_id INT fk
  • role_id INT fk }

Tabela Address {

  • id INT pk
  • user_id INT fk
  • street VARCHAR(100)
  • number VARCHAR(50)
  • complement VARCHAR(100)
  • neighborhood VARCHAR(50)
  • city VARCHAR(30)
  • state VARCHAR(30)
  • contry VARCHAR(30)
  • postalCode VARCHAR(8) }

Tabela Institution {

  • id INT pk
  • name TEXT
  • cnpj VARCHAR(14)
  • latitude DECIMAL(9,6),
  • longitude DECIMAL(9,6)
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela Role {

  • id INT pk
  • title TEXT
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela Event {

  • id INT pk
  • title TEXT
  • imageURL TEXT
  • description TEXT
  • date DATETIME
  • hour DATETIME
  • isOnline BOOLEAN
  • adress TEXT
  • latitude DECIMAL(9,6),
  • longitude DECIMAL(9,6),
  • project_id INT fk
  • institution_id INT fk
  • updatedBy TEXT
  • updatedAt DATETIME }

Tabela Project {

  • id INT pk
  • name TEXT
  • history TEXTUser {
  • id INT pk
  • name TEXT
  • email VARCHAR(255)
  • password VARCHAR(255)
  • phone CHAR(11)
  • cpfcnpj VARCHAR(14)
  • photoURL TEXT
  • blocked BOOLEAN
  • complement VARCHAR(100)
  • neighborhood
  • imageURL TEXT
  • purpose TEXT
  • contact VARCHAR(50)
  • start_date DATE
  • end_date DATE
  • status VARCHAR(30)
  • teacher_id INT fk
  • institution_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela Category {

  • id INT pk
  • name TEXT
  • type INT
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela Keyword {

  • id INT pk,
  • word TEXT
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela GeneralParameters {

  • id INT pk,
  • parameter TEXT
  • content TEXT
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela SocialNetwork {

  • id INT pk
  • name TEXT
  • icon TEXT
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela Post {

  • id INT pk
  • content TEXT
  • project_id INT fk
  • event_id INT fk
  • user_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela PostLikes {

  • id INT pk
  • post_id INT fk
  • user_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela PostComments {

  • id INT pk
  • content TEXT
  • post_id INT fk
  • user_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela ProjectCategory {

  • project_id INT fk
  • category_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela EventCategory {

  • event_id INT fk
  • category_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela ProjectKeyword {

  • project_id INT fk,
  • keyword_id INT fk
  • updatedAt DATETIME
  • updatedBy TEXT }

Tabela UsersSocialNetwork {

  • user_id INT fk
  • social_network_id INT fk
  • social_network_URL TEXT
  • updatedAt DATETIME
  • updatedBy TEXT }
Clone repository
  • Arquitetura
  • Banco de Dados
  • Configuracao
  • Design_mockups
  • Escopo
  • Gerencia
  • Git Workflow
  • Qualidade
  • Home