Skip to content

Schema do banco de dados

Gildo Junior edited this page Sep 10, 2025 · 24 revisions

📘 Estrutura do Banco de Dados

Esta página documenta a estrutura do banco de dados da aplicação, incluindo entidades, atributos e relacionamentos. O modelo está representado em formato ERD (Entity-Relationship Diagram), gerado com Mermaid.js.

📊 Diagrama ER – Visão Geral

erDiagram
    communities {
        integer id PK
        string  username 
        string  email 
        string  password
        datetime created_at
        datetime updated_at
    }
    news {
        integer id PK
        string  title 
        string  content
        string  category
        string  user_email
        string  source_url
        string  tags
        string  users_email_list
        string  social_media_url
        integer  likes
        integer community_id FK
        datetime created_at 
        datetime updated_at
    }
    libraries {
        integer id PK
        string  library_name 
        string  news
        string  logo
        string  version  
        date  release_date  
        string  releases_doc_url  
        string  fixed_release_url  
        string language
        integer community_id FK
        datetime created_at
        datetime updated_at
    }
    subscriptions {
        integer id PK
        string  user_email 
        string  tags
        integer community_id FK
        integer library_id FK
        datetime created_at
        datetime updated_at
    }
    libraries_request {
        integer id PK
        string user_email
        string library_name
        string library_home_page
        integer community_id FK
        datetime created_at
        datetime updated_at
    }
    communities ||--o{ news : publishers_news
    communities ||--o{ libraries : publishers_libraries
    communities ||--o{ subscriptions : publishers_subscriptions
    communities || --o{ libraries_request : publishers_libraries_request
    subscriptions ||--o{ libraries : follows
Loading

🗂️ Entidades e Atributos

🔸 communities

Representa as comunidades do sistema, responsáveis por publicar notícias, gerenciar bibliotecas e administrar assinaturas.

Campo Tipo Descrição
id integer Chave primária
username string Nome da comunidade
email string E-mail da comunidade
password string Senha criptografada (hash)
created_at datetime Data de criação
updated_at datetime Data da última atualização

🔸 news

Notícias publicadas, geralmente associadas a uma linguagem de programação.

Campo Tipo Descrição
id integer Chave primária
title string Título da notícia
content string Conteúdo completo
category string Categoria (ex: release, evento, artigo)
email string E-mail do autor
source_url string Link para a fonte original
tags list[str] Palavras-chave associadas
users_email_list list[str] Lista de email do usuario da comunidade que gostou da notícia
social_media_url string Link para compartilhamento nas redes
likes integer Número de curtidas
community_id integer FK para communities
created_at datetime Data de criação
updated_at datetime Data da última atualização

🔸 libraries

Representa uma linguagem ou biblioteca monitorada no sistema.

Campo Tipo Descrição
id integer Chave primária
library_name string Nome da linguagem ou biblioteca
news string Array de uma lista de objetos com a tag e a descrição dos update da biblioteca
logo string Caminho ou URL do logo
version string Versão do release mais recente
release_date string Data da ultima release
releases_doc_url string URL da página de releases oficiais
fixed_release_doc string URL da página de releases de correção
language string Linguagem para qual a biblioteca foi desenvolvida
community_id integer FK para communities
created_at datetime Data de criação
updated_at datetime Data da última atualização

🔸 subscriptions

Armazena assinaturas de usuários interessados em receber atualizações por linguagem ou tema.

Campo Tipo Descrição
id integer Chave primária
user_email string E-mail do assinante
tags string Tags de interesse (ex: "Python,IA")
community_id integer FK para communities
library_id integer FK para libraries
created_at datetime Data de criação
updated_at datetime Data da última atualização

🔗 Relacionamentos

Origem Destino Tipo Relacionamento (en) Descrição
communities news 1:N publishers_news Uma comunidade pode publicar várias notícias
communities libraries 1:N publishers_libraries Uma comunidade pode publicar várias bibliotecas
communities subscriptions 1:N publishers_subscriptions Uma comunidade pode publicar várias assinaturas

| | communities | libraries_request| 1:N | publishers_libraries_request | Uma comunidade pode solicitar monitoramento de varias bibliotecas | | subscriptions| libraries | N:N | follows | Um assinante pode seguir várias linguagens, e vice-versa |


📎 Considerações

  • Relacionamentos N:N, como subscriptionslibraries, devem ser implementados com tabelas pivot no banco real, mesmo que não apareçam explicitamente no diagrama.
  • Os nomes dos relacionamentos estão em inglês, para manter consistência com o código-fonte.
  • O campo email representa a pessoa que colaborou para publicar news e/ou libraries de uma comunidade.
  • Essa estrutura pode evoluir conforme a aplicação cresça ou novas funcionalidades sejam adicionadas.
Clone this wiki locally