Documentação do Negócio
Documentação Técnica
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.
UserDetails
Ela é usada para armazenar informações adicionais do usuário, separadamente da tabela principal de user. Isso é útil para manter a separação de responsabilidades entre as tabelas.
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.