|
|
# Documentação do Banco de Dados
|
|
|
|
|
|
## Visão Geral
|
|
|
O banco de dados foi projetado para gerenciar assinaturas de datasets e data products, garantindo rastreabilidade de transações e faturamento. Ele segue um modelo relacional estruturado para garantir consistência e escalabilidade.\
|
|
|
|
|
|
## Diagrama
|
|
|
|
|
|

|
|
|
|
|
|
## Estrutura do Banco de Dados
|
|
|
O banco é composto pelas seguintes tabelas principais:
|
|
|
|
|
|
### **User**
|
|
|
Gerencia os usuários do sistema, armazenando informações pessoais, credenciais de acesso e vínculo com uma conta.
|
|
|
|
|
|
### **UserRole**
|
|
|
Define os papéis que um usuário pode ter dentro do sistema, como administrador ou assinante.
|
|
|
|
|
|
### **Account**
|
|
|
Representa uma entidade (empresa ou organização) que assina datasets e realiza transações.
|
|
|
|
|
|
### **AccountRole**
|
|
|
Define os diferentes tipos de papéis que uma conta pode ter dentro da plataforma.
|
|
|
|
|
|
### **Subscription**
|
|
|
Registra as assinaturas de datasets feitas pelas contas, incluindo informações sobre período e status.
|
|
|
|
|
|
### **Transaction**
|
|
|
Armazena informações sobre transações financeiras realizadas dentro do sistema, vinculadas a uma conta e a um usuário responsável.
|
|
|
|
|
|
### **TransactionDetail**
|
|
|
Detalha os itens dentro de uma transação, associando datasets e produtos de dados adquiridos.
|
|
|
|
|
|
### **Invoice**
|
|
|
Registra os valores faturados das transações, garantindo rastreabilidade contábil.
|
|
|
|
|
|
### **Dataset**
|
|
|
Representa um dataset disponível para assinatura, contendo metadados como origem, preço e categoria.
|
|
|
|
|
|
### **DataSource**
|
|
|
Define a fonte de onde os datasets são obtidos, associando-os a provedores de dados.
|
|
|
|
|
|
### **DataProvider**
|
|
|
Representa uma entidade que fornece datasets para a plataforma.
|
|
|
|
|
|
### **DataProduct**
|
|
|
Define um conjunto de datasets agrupados em um produto de dados que pode ser adquirido como uma unidade.
|
|
|
|
|
|
### **DataProductItem**
|
|
|
Relaciona datasets individuais a um data product, permitindo composição flexível de pacotes de dados.
|
|
|
|
|
|
## Regras de Integridade e Constraints
|
|
|
- Todas as chaves primárias são UUIDs para garantir unicidade.
|
|
|
- As relações entre tabelas são definidas por chaves estrangeiras (FK) para garantir a integridade referencial.
|
|
|
- O campo `is_active` é utilizado para marcar registros ativos e inativos, evitando exclusão física de dados.
|
|
|
- O faturamento é baseado em transações e invoices, garantindo rastreabilidade e conformidade com práticas contábeis.
|
|
|
|
|
|
## Considerações Finais
|
|
|
O banco de dados foi estruturado para garantir flexibilidade e escalabilidade. Alteracoes futuras podem incluir:
|
|
|
- Auditoria de logs para rastrear ações de usuários.
|
|
|
- Indexação para otimização de buscas.
|
|
|
- Expansão do modelo de faturamento para planos diferenciados. |
|
|
\ No newline at end of file |