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

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 Pdf {
    • 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).

Pdf: Gerencia o anexo do protocolo de ação na criação de um projeto.

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
  • startHour DATETIME
  • endHour 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 Pdf {

  • id INT pk
  • fileName TEXT
  • mimeType TEXT
  • filePath TEXT
  • project_id INT fk }

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