-
Notifications
You must be signed in to change notification settings - Fork 5
Schema do banco de dados
Leandro Dias edited this page Aug 5, 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
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
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 |
string | E-mail da comunidade | |
password | string | Senha criptografada (hash) |
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) |
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 |
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 |
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
|
Armazena assinaturas de usuários interessados em receber atualizações por linguagem ou tema.
Campo | Tipo | Descrição |
---|---|---|
id | integer | Chave primária |
string | E-mail do assinante | |
tags | string | Tags de interesse (ex: "Python,IA") |
community_id | integer | FK para communities
|
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 |
-
Relacionamentos N:N, como
Subscriptions
↔libraries
, 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 publicarnews
e/oulibraries
de uma comunidade. - Essa estrutura pode evoluir conforme a aplicação cresça ou novas funcionalidades sejam adicionadas.