Skip to content

Schema do banco de dados

Leandro Dias edited this page Aug 5, 2025 · 13 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
    }
    news {
        integer id PK
        string  title 
        string  content
        string  category
        string  email
        string  source_url
        string  tags
        string  social_media_url
        integer  likes
        integer community_id FK
        datetime created_at 
        datetime updated_at
    }
    libraries {
        integer id PK
        string  library_name 
        string  email
        string  releases_url   
        string  logo
        integer community_id FK
    }
    Subscriptions {
        integer id PK
        string  email 
        string  tags
        integer community_id FK
    }
    communities ||--o{ news : publishers_news
    communities ||--o{ libraries : publishers_libraries
    communities ||--o{ Subscriptions : publishers_subscriptions
    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)

🔸 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 string Palavras-chave associadas
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
email string E-mail do autor
releases_url string URL da página de releases oficiais
logo string Caminho ou URL do logo
community_id integer FK para communities

🔸 Subscriptions

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

Campo Tipo Descrição
id integer Chave primária
email string E-mail do assinante
tags string Tags de interesse (ex: "Python,IA")
community_id integer FK para communities

🔗 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
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.