... | @@ -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.
|
... | | ... | |