Skip to content

Schema do banco de dados

Leandro Dias edited this page Jul 15, 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
    users {
        integer id PK
        string  username 
        string  email 
        string  password
    }
    news {
        integer id PK
        string  title 
        string  content
        string  category
        string  user_email
        string  source_url
        string  tags
        string  social_media_url
        integer  likes
        integer user_id FK
        integer library_id FK
        datetime created_at 
        datetime updated_at
    }
    libraries {
        integer id PK
        string  library_name 
        string  user_email
        string  releases_url   
        string  logo
        integer user_id FK
    }
    Subscriptions {
        integer id PK
        string  email 
        string  tags
        integer user_id FK
    }
    users ||--o{ news : publishers_news
    users ||--o{ libraries : publishers_libraries
    users ||--o{ Subscriptions : publishers_subscriptions
    news }o--|| libraries : relates_to
    Subscriptions ||--o{ libraries : follows
Loading

🗂️ Entidades e Atributos

🔸 users

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)
user_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
user_id integer FK para users da Um comunidade
library_id integer FK para libraries (linguagem relacionada)
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
user_email string E-mail do autor
releases_url string URL da página de releases oficiais
logo string Caminho ou URL do logo
user_id integer FK para users da Um comunidade

🔸 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")
user_id integer FK para users da Um comunidade

🔗 Relacionamentos

Origem Destino Tipo Relacionamento (en) Descrição
users news 1:N publishers_news Um comunidade pode publicar várias notícias
users libraries 1:N publishers_libraries Um comunidade pode publicar várias bibliotecas
users Subscriptions 1:N publishers_subscriptions Um comunidade pode publicar várias assinaturas
news libraries N:1 relates_to Cada notícia está relacionada a uma linguagem/biblioteca
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 user_email representa a pessoa que colaborou para publicar news e/ou libraries.
  • Essa estrutura pode evoluir conforme a aplicação cresça ou novas funcionalidades sejam adicionadas.
Clone this wiki locally