-
Notifications
You must be signed in to change notification settings - Fork 6
Schema 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.
erDiagram
communities {
integer id PK
string username
string email
string password
datetime created_at
datetime updated_at
}
news {
integer id PK
string title
string content
string category
string user_email
string source_url
string tags
string users_email_list
string social_media_url
integer likes
integer community_id FK
datetime created_at
datetime updated_at
}
libraries {
integer id PK
string library_name
string news
string logo
string version
date release_date
string releases_doc_url
string fixed_release_url
string language
integer community_id FK
datetime created_at
datetime updated_at
}
subscriptions {
integer id PK
string user_email
string tags
integer community_id FK
integer library_id FK
datetime created_at
datetime updated_at
}
libraries_request {
integer id PK
string user_email
string library_name
string library_home_page
integer community_id FK
datetime created_at
datetime updated_at
}
communities ||--o{ news : publishers_news
communities ||--o{ libraries : publishers_libraries
communities ||--o{ subscriptions : publishers_subscriptions
communities || --o{ libraries_request : publishers_libraries_request
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) |
| created_at | datetime | Data de criação |
| updated_at | datetime | Data da última atualização |
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 | list[str] | Palavras-chave associadas |
| users_email_list | list[str] | Lista de email do usuario da comunidade que gostou da notícia |
| 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 |
| news | string | Array de uma lista de objetos com a tag e a descrição dos update da biblioteca |
| logo | string | Caminho ou URL do logo |
| version | string | Versão do release mais recente |
| release_date | string | Data da ultima release |
| releases_doc_url | string | URL da página de releases oficiais |
| fixed_release_doc | string | URL da página de releases de correção |
| language | string | Linguagem para qual a biblioteca foi desenvolvida |
| community_id | integer | FK para communities
|
| created_at | datetime | Data de criação |
| updated_at | datetime | Data da última atualização |
Armazena assinaturas de usuários interessados em receber atualizações por linguagem ou tema.
| Campo | Tipo | Descrição |
|---|---|---|
| id | integer | Chave primária |
| user_email | string | E-mail do assinante |
| tags | string | Tags de interesse (ex: "Python,IA") |
| community_id | integer | FK para communities
|
| library_id | integer | FK para libraries
|
| created_at | datetime | Data de criação |
| updated_at | datetime | Data da última atualização |
| 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 |
|
| communities | libraries_request| 1:N | publishers_libraries_request | Uma comunidade pode solicitar monitoramento de varias bibliotecas |
| 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
emailrepresenta a pessoa que colaborou para publicarnewse/oulibrariesde uma comunidade. - Essa estrutura pode evoluir conforme a aplicação cresça ou novas funcionalidades sejam adicionadas.