Skip to content

Schema do banco de dados

Leandro Dias edited this page Jul 13, 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  source_url
        string  social_media_url
        string  likes
        datetime created_at 
        datetime updated_at
        integer user_id FK
        integer library_id FK
    }
    libraries {
        integer id PK
        string  library_name 
        string  releases_url   
        string  logo
        string  fixed_release_url
        string  releases_urls_list
        integer user_id FK
    }
    tags {
        integer id PK
        string  name 
    }
    Subscriptions {
        integer id PK
        string  email 
    }
    users ||--o{ news : publishes
    users ||--o{ libraries : manages
    news }o--|| libraries : relates_to
    news }o--o{ tags : covers
    Subscriptions }o--o{ libraries : follows
    Subscriptions }o--o{ tags : tracks
Loading

🗂️ Entidades e Atributos

🔸 users

Representa os usuários do sistema, responsáveis por publicar notícias e gerenciar bibliotecas (linguagens).

Campo Tipo Descrição
id integer Chave primária
username string Nome de usuário
email string E-mail
password string Senha (hash)

🔸 news

Notícias publicadas relacionadas a linguagens 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 editorial
source_url string Link para a fonte original
social_media_url string Link para compartilhamento
likes string Número de curtidas
created_at datetime Data de criação
updated_at datetime Data de última atualização
user_id integer FK para users (autor)
library_id integer FK para libraries (linguagem relacionada)

🔸 libraries

Cada biblioteca representa uma linguagem de programação monitorada.

Campo Tipo Descrição
id integer Chave primária
library_name string Nome da linguagem
releases_url string URL da release oficial
logo string Caminho para o logo
fixed_release_url string URL para release fixa
releases_urls_list string Lista de URLs de releases adicionais
user_id integer FK para users (quem gerencia)

🔸 tags

Tags são os assuntos ou temas abordados pelas notícias.

Campo Tipo Descrição
id integer Chave primária
name string Nome do assunto

🔸 Subscriptions

Entidade que representa o e-mail de usuários que desejam acompanhar notícias por linguagem e por assunto.

Campo Tipo Descrição
id integer Chave primária
email string E-mail cadastrado na assinatura

🔗 Relacionamentos

Origem Destino Tipo Relacionamento (em inglês) Descrição
users news 1:N publishes Um usuário pode publicar várias notícias
users libraries 1:N manages Um usuário pode gerenciar várias linguagens
news libraries N:1 relates_to Cada notícia está vinculada a uma linguagem específica
news tags N:N covers Notícias podem abordar múltiplos assuntos
Subscriptions libraries N:N follows Um assinante pode seguir várias linguagens
Subscriptions tags N:N tracks Um assinante pode acompanhar diversos assuntos

📎 Considerações

  • Relacionamentos N:N como newstags ou Subscriptionstags devem ser implementados com tabelas de junção no banco real, embora não apareçam no diagrama acima para simplificação visual.
  • Os nomes dos relacionamentos estão em inglês para manter consistência com o código-fonte e boas práticas de documentação técnica.
  • Este modelo pode evoluir com base em mudanças na lógica de negócio ou estrutura de dados.
Clone this wiki locally