-
Notifications
You must be signed in to change notification settings - Fork 5
Schema do banco de dados
Leandro Dias edited this page Jul 13, 2025
·
13 revisions
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.
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
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 |
string | ||
password | string | Senha (hash) |
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) |
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 são os assuntos ou temas abordados pelas notícias.
Campo | Tipo | Descrição |
---|---|---|
id | integer | Chave primária |
name | string | Nome do assunto |
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 |
string | E-mail cadastrado na assinatura |
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 |
-
Relacionamentos N:N como
news
↔tags
ouSubscriptions
↔tags
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.