Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Painel de Dados Nubo
  • WikiWiki
  • Wiki
  • Banco de Dados

Banco de Dados · Changes

Page history
Update Banco de Dados authored Jun 14, 2025 by Luana Farias da Silva's avatar Luana Farias da Silva
Show whitespace changes
Inline Side-by-side
Banco-de-Dados.md
View page @ c6635991
...@@ -45,7 +45,7 @@ Armazena as informações dos usuários do sistema. Cada usuário está associad ...@@ -45,7 +45,7 @@ Armazena as informações dos usuários do sistema. Cada usuário está associad
| `updated_at` | `TIMESTAMP` | — | `NOT NULL` | Data da última atualização do registro. | | `updated_at` | `TIMESTAMP` | — | `NOT NULL` | Data da última atualização do registro. |
#### Relacionamentos #### Relacionamentos
#### Foreign Keys
- `account`: relacionamento com a tabela `account`, representando a conta do usuário. - `account`: relacionamento com a tabela `account`, representando a conta do usuário.
- `role_id`: relacionamento com a tabela `user_role`, indicando o tipo de permissão do usuário. - `role_id`: relacionamento com a tabela `user_role`, indicando o tipo de permissão do usuário.
...@@ -62,9 +62,10 @@ Contém informações adicionais de perfil associadas a um usuário. Essa tabela ...@@ -62,9 +62,10 @@ Contém informações adicionais de perfil associadas a um usuário. Essa tabela
| `profile_pic` | `String` | — | `NOT NULL` | URL ou caminho da imagem de perfil do usuário. | | `profile_pic` | `String` | — | `NOT NULL` | URL ou caminho da imagem de perfil do usuário. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `user_id`: relacionamento com a tabela `user`, definindo a quem pertencem os dados complementares. - `user_id`: relacionamento com a tabela `user`, definindo a quem pertencem os dados complementares.
--- ---
...@@ -86,7 +87,8 @@ Define os diferentes papéis (*roles*) que um usuário pode assumir dentro do si ...@@ -86,7 +87,8 @@ Define os diferentes papéis (*roles*) que um usuário pode assumir dentro do si
### Relacionamentos ### Relacionamentos
- Essa tabela é referenciada por `user.role_id` para associar cada usuário ao seu respectivo papel. - Essa tabela é referenciada pela tabela `user`, utilizando o atributo `user.role_id` para associar cada usuário ao seu respectivo papel.
--- ---
...@@ -107,10 +109,13 @@ Armazena os dados das contas principais do sistema, que podem representar uma em ...@@ -107,10 +109,13 @@ Armazena os dados das contas principais do sistema, que podem representar uma em
| `updated_at` | `TIMESTAMP` | — | `NOT NULL` | Data da última atualização do registro. | | `updated_at` | `TIMESTAMP` | — | `NOT NULL` | Data da última atualização do registro. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `role_id`: relacionamento com a tabela `account_role`, indicando o tipo da conta. - `role_id`: relacionamento com a tabela `account_role`, indicando o tipo da conta.
- `subscriptions`: relacionamento com a tabela `subscription`, listando as assinaturas associadas à conta.
- `transactions`: relacionamento com a tabela `transaction`, listando as transações realizadas pela conta. #### SQLAlchemy Relationships
- `subscriptions`: relacionamento unidirecional com a tabela `subscription`, listando as assinaturas associadas à conta.
- `transactions`: relacionamento unidirecional com a tabela `transaction`, listando as transações realizadas pela conta.
--- ---
...@@ -135,6 +140,7 @@ Define os diferentes papéis que uma conta pode ter no sistema. Esses papéis s ...@@ -135,6 +140,7 @@ Define os diferentes papéis que uma conta pode ter no sistema. Esses papéis s
- Essa tabela é referenciada por `account.role_id` para definir o papel da conta no sistema. - Essa tabela é referenciada por `account.role_id` para definir o papel da conta no sistema.
--- ---
...@@ -156,9 +162,13 @@ Registra as assinaturas de produtos de dados feitas por contas do sistema. Cada ...@@ -156,9 +162,13 @@ Registra as assinaturas de produtos de dados feitas por contas do sistema. Cada
| `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Timestamp da última modificação. | | `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Timestamp da última modificação. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `account_id`: relacionamento com "account", utilizando o atributo `account.id` para associar uma subscription a uma conta.
#### SQLAlchemy Relationships
- `account`: relacionamento unidirecional com a tabela `account`, retornando qual conta realizou a assinatura.
- `data_product`: relacionamento unidirecional com a tabela `data_product`, retornando qual produto foi assinado.
- `account`: relacionamento com a tabela `account`, indicando qual conta realizou a assinatura.
- `data_product`: relacionamento com a tabela `data_product`, indicando qual produto foi assinado.
--- ---
...@@ -179,10 +189,14 @@ Armazena os detalhes de cada transação realizada por uma conta, vinculando pro ...@@ -179,10 +189,14 @@ Armazena os detalhes de cada transação realizada por uma conta, vinculando pro
| `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Data e hora da última atualização do registro. | | `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Data e hora da última atualização do registro. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `account_id`: relacionamento com a tabela `account`, utilizando o atributo `account.id` para associar uma transação á uma conta.
#### SQLAlchemy Relationships
- `transaction`: relacionamento unidirecional com a tabela `transaction`, à qual o detalhe pertence.
- `invoices`: relacionamento unidirecional com a tabela `invoice`, retornando qual transação está relacionada á transação.
- `details`: relacionamento unidirecional com a tabela `transaction_detail`, retornando os detalhes da transação.
- `transaction`: relacionamento com a tabela `transaction`, à qual o detalhe pertence.
- `data_product`: relacionamento com a tabela `data_product`, especificando qual produto está relacionado ao detalhe.
- `subscription`: relacionamento com a tabela `subscription`, referenciando a assinatura utilizada (se aplicável).
--- ---
...@@ -203,10 +217,15 @@ Armazena os detalhes de cada transação realizada por uma conta, vinculando pro ...@@ -203,10 +217,15 @@ Armazena os detalhes de cada transação realizada por uma conta, vinculando pro
| `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Data e hora da última atualização do registro. | | `updated_at` | `DateTime` | — | `DEFAULT func.now()`, atualizado com `onupdate` | Data e hora da última atualização do registro. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `transaction_id`: relacionamento com a tabela `transaction`, utilizando o atributo `transaction.id` para associar uma transaction com transaction_detail.
- `data_product_id`: relacionamento com a tabela `data_product`, utilizando o atributo `data_product.id` para associar um data_product a tabela transaction_detail.
#### SQLAlchemy Relationships
- `transaction`: relacionamento bidirecional com a tabela `transaction`, à qual o detalhe pertence.
- `data_product`: relacionamento unidirecional com a tabela `data_product`, especificando qual produto está relacionado ao detalhe.
- `subscription`: relacionamento unidirecional com a tabela `subscription`, referenciando a assinatura utilizada (se aplicável).
- `transaction`: relacionamento com a tabela `transaction`, à qual o detalhe pertence.
- `data_product`: relacionamento com a tabela `data_product`, especificando qual produto está relacionado ao detalhe.
- `subscription`: relacionamento com a tabela `subscription`, referenciando a assinatura utilizada (se aplicável).
--- ---
...@@ -226,11 +245,16 @@ Armazena as faturas geradas para cada transação. Cada fatura está vinculada a ...@@ -226,11 +245,16 @@ Armazena as faturas geradas para cada transação. Cada fatura está vinculada a
| `updated_at` | `DateTime` | — | `NOT NULL` | Data e hora da última atualização da fatura. | | `updated_at` | `DateTime` | — | `NOT NULL` | Data e hora da última atualização da fatura. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `transaction_id`: relacionamento com a tabela `transaction`, utilizando o atributo `transaction.id` para associar uma `transaction` a tabela `invoice`.
#### SQLAlchemy Relationships
- `transaction`: relacionamento bidirecional com a tabela `transaction`, retornando a qual transação a fatura pertence.
- `transaction`: relacionamento com a tabela `transaction`, indicando a qual transação a fatura pertence.
--- ---
### **Dataclient** ### **Dataclient**
### Descrição ### Descrição
Armazena os dados dos clientes consumidores de produtos ou serviços de dados. Cada cliente está vinculado a uma conta no sistema e possui um código identificador único utilizado em processos de autenticação ou auditoria. Armazena os dados dos clientes consumidores de produtos ou serviços de dados. Cada cliente está vinculado a uma conta no sistema e possui um código identificador único utilizado em processos de autenticação ou auditoria.
...@@ -246,8 +270,10 @@ Armazena os dados dos clientes consumidores de produtos ou serviços de dados. C ...@@ -246,8 +270,10 @@ Armazena os dados dos clientes consumidores de produtos ou serviços de dados. C
| `created_at` | `String` | — | `NOT NULL` | Data de criação do registro | | `created_at` | `String` | — | `NOT NULL` | Data de criação do registro |
| `updated_at` | `String` | — | `NOT NULL` | Data da última atualização do registro | | `updated_at` | `String` | — | `NOT NULL` | Data da última atualização do registro |
--- ---
### **Dataset** ### **Dataset**
### Descrição ### Descrição
Armazena os conjuntos de dados fornecidos por diferentes provedores. Cada dataset pertence a um provedor de dados e está vinculado diretamente a um único produto de dados publicado no sistema. Armazena os conjuntos de dados fornecidos por diferentes provedores. Cada dataset pertence a um provedor de dados e está vinculado diretamente a um único produto de dados publicado no sistema.
...@@ -264,8 +290,12 @@ Armazena os conjuntos de dados fornecidos por diferentes provedores. Cada datase ...@@ -264,8 +290,12 @@ Armazena os conjuntos de dados fornecidos por diferentes provedores. Cada datase
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. | | `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `data_provider_id`: relacionamento com a tabela `data_provider`, utilizando o atributo `data_provider.id` para associar um `dataset` a tabela `data_provider`.
#### SQLAlchemy Relationships
- `data_product`: relacionamento bidirecional de cardinalidade **um para um** com a tabela `data_product`, vinculando o dataset ao produto publicado.
- `data_product`: relacionamento com a tabela `data_product`, vinculando o dataset ao produto publicado. O uso de `uselist=False` indica uma relação de **um para um**.
--- ---
...@@ -287,12 +317,8 @@ Representa as fontes físicas ou virtuais de onde os dados são originados por u ...@@ -287,12 +317,8 @@ Representa as fontes físicas ou virtuais de onde os dados são originados por u
| `latitude` | `String` | — | `NOT NULL` | Latitude geográfica. | | `latitude` | `String` | — | `NOT NULL` | Latitude geográfica. |
| `longitude` | `String` | — | `NOT NULL` | Longitude geográfica. | | `longitude` | `String` | — | `NOT NULL` | Longitude geográfica. |
### Relacionamentos
- A coluna `data_provider_id` **deveria** referenciar a tabela `data_provider`. O relacionamento está comentado no código, mas pode ser reativado se necessário: ---
```python
data_provider = relationship("DataProvider", back_populates="data_sources")
### **DataProvider** ### **DataProvider**
...@@ -313,7 +339,6 @@ Armazena os provedores de dados responsáveis por publicar e manter datasets na ...@@ -313,7 +339,6 @@ Armazena os provedores de dados responsáveis por publicar e manter datasets na
--- ---
### **DataProduct** ### **DataProduct**
### Descrição ### Descrição
Armazena os produtos de dados disponíveis na plataforma, os quais são baseados em datasets fornecidos por provedores. Cada produto contém informações detalhadas como localização, descrição, preço e está vinculado a um dataset. Armazena os produtos de dados disponíveis na plataforma, os quais são baseados em datasets fornecidos por provedores. Cada produto contém informações detalhadas como localização, descrição, preço e está vinculado a um dataset.
...@@ -333,9 +358,12 @@ Armazena os produtos de dados disponíveis na plataforma, os quais são baseados ...@@ -333,9 +358,12 @@ Armazena os produtos de dados disponíveis na plataforma, os quais são baseados
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. | | `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
### Relacionamentos ### Relacionamentos
#### Foreign Keys
- `dataset_id`: relacionamento com a tabela `dataset`, utilizando o atributo `dataset.id` para associar um `data_product` a tabela `dataset`.
- `subscriptions`: lista de assinaturas atreladas ao produto de dados. #### SQLAlchemy Relationships
- `dataset`: vínculo com o dataset que deu origem a este produto (relacionamento de muitos para um). - `subscriptions`: relacionamento unidirecional que lista as assinaturas atreladas ao produto de dados.
- `dataset`: relacionamento bidirecional de cardinalidade **um para muitos** com o dataset que deu origem a este produto.
--- ---
...@@ -354,13 +382,15 @@ Relaciona um produto de dados a múltiplos datasets, permitindo que um único `d ...@@ -354,13 +382,15 @@ Relaciona um produto de dados a múltiplos datasets, permitindo que um único `d
| `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. | | `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. |
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. | | `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
### Observações ### Relacionamentos
#### Foreign Keys
- `dataset_product_id`: relacionamento com a tabela `dataset_product`, utilizando o atributo `data_set_product.id` para associar um `data_product_item` a tabela `data_set_product`.
- `dataset_id`: relacionamento com a tabela `dataset`, utilizando o atributo `dataset.id` para associar um `data_product_item` a tabela `dataset`.
- Esta tabela implementa uma relação **muitos-para-muitos** entre `data_product` e `dataset`, permitindo reuso de datasets em diferentes produtos.
- Pode ser estendida com metadados adicionais no futuro, caso necessário (por exemplo, ordem de inclusão ou tags específicas por item).
--- ---
## Regras de Integridade e Constraints ## Regras de Integridade e Constraints
- Todas as chaves primárias são UUIDs para garantir unicidade. - 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. - As relações entre tabelas são definidas por chaves estrangeiras (FK) para garantir a integridade referencial.
......
Clone repository
  • Arquitetura
  • Banco de Dados
  • Gerência
  • Mockups
  • Processos
  • Sprints
  • Testes
  • Home