... | ... | @@ -233,19 +233,129 @@ Armazena as faturas geradas para cada transação. Cada fatura está vinculada a |
|
|
|
|
|
|
|
|
### **Dataset**
|
|
|
Representa um dataset disponível para assinatura, contendo metadados como origem, preço e categoria.
|
|
|
### 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.
|
|
|
|
|
|
### Estrutura da Tabela
|
|
|
|
|
|
| Coluna | Tipo | Chave | Restrições | Descrição |
|
|
|
|------------------|-----------|------------|----------------------------------------|--------------------------------------------------------------|
|
|
|
| `id` | `String` | Primária | Gerado via `UUID`, `NOT NULL` | Identificador único do dataset. |
|
|
|
| `data_provider_id`| `String` | Estrangeira| `ForeignKey(data_provider.id)` | Identifica o provedor de dados responsável. |
|
|
|
| `category` | `String` | — | `NOT NULL` | Categoria do dataset (ex: saúde, educação, clima, etc). |
|
|
|
| `is_active` | `Boolean` | — | `DEFAULT True` | Indica se o dataset está ativo no sistema. |
|
|
|
| `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. |
|
|
|
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
|
|
|
|
|
|
### Relacionamentos
|
|
|
|
|
|
- `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**.
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
### **DataSource**
|
|
|
Define a fonte de onde os datasets são obtidos, associando-os a provedores de dados.
|
|
|
### Descrição
|
|
|
Representa as fontes físicas ou virtuais de onde os dados são originados por um provedor de dados. Cada fonte contém informações de localização geográfica e está vinculada a um provedor.
|
|
|
|
|
|
> ⚠️ **Nota**: A tabela define tanto `id` quanto `data_provider_id` como chaves primárias, o que cria uma chave primária composta. Verifique se essa é realmente a intenção, pois normalmente apenas `id` é suficiente como chave primária única.
|
|
|
|
|
|
### Estrutura da Tabela
|
|
|
|
|
|
| Coluna | Tipo | Chave | Restrições | Descrição |
|
|
|
|-------------------|-----------|---------------|----------------------------------|-----------------------------------------------------------------|
|
|
|
| `id` | `String` | Primária | Gerado via `UUID`, `NOT NULL` | Identificador único da fonte de dados. |
|
|
|
| `data_provider_id`| `String` | Primária/Estrangeira | `UUID`, `NOT NULL` | Identificador do provedor de dados (relacionamento pendente). |
|
|
|
| `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. |
|
|
|
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
|
|
|
| `is_active` | `Boolean` | — | `DEFAULT True` | Indica se a fonte está ativa. |
|
|
|
| `location` | `String` | — | `NOT NULL` | Descrição do local da fonte (ex: cidade, servidor, etc.). |
|
|
|
| `latitude` | `String` | — | `NOT NULL` | Latitude 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**
|
|
|
Representa uma entidade que fornece datasets para a plataforma.
|
|
|
### Descrição
|
|
|
Armazena os provedores de dados responsáveis por publicar e manter datasets na plataforma. Cada provedor está vinculado a uma conta do sistema e pode ter múltiplas fontes de dados (data sources) e datasets associados.
|
|
|
|
|
|
### Estrutura da Tabela
|
|
|
|
|
|
| Coluna | Tipo | Chave | Restrições | Descrição |
|
|
|
|--------------|----------|------------|-------------------------------------|--------------------------------------------------------------------|
|
|
|
| `id` | `String` | Primária | `UUID`, `INDEX`, `NOT NULL` | Identificador único do provedor de dados. |
|
|
|
| `name` | `String` | — | `NOT NULL` | Nome do provedor de dados. |
|
|
|
| `account_id` | `String` | Estrangeira| `ForeignKey(account.id)`, `NOT NULL`| Conta responsável pelo provedor. |
|
|
|
| `created_at` | `String` | — | `NOT NULL` | Data de criação do registro (⚠️ Armazenado como string). |
|
|
|
| `updated_at` | `String` | — | `NOT NULL` | Data da última atualização do registro (⚠️ Armazenado como string).|
|
|
|
|
|
|
### Observações
|
|
|
|
|
|
- Os campos `created_at` e `updated_at` estão definidos como `String`, mas é comum que campos de data utilizem `DateTime` ou `TIMESTAMP`. Verifique se essa decisão é proposital ou se houve um equívoco.
|
|
|
|
|
|
### Relacionamentos Sugeridos
|
|
|
|
|
|
- Pode conter relacionamento com:
|
|
|
- `Account`: a conta dona do provedor.
|
|
|
- `Dataset`: datasets publicados por este provedor.
|
|
|
- `DataSource`: fontes associadas ao provedor.
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### **DataProduct**
|
|
|
Define um conjunto de datasets agrupados em um produto de dados que pode ser adquirido como uma unidade.
|
|
|
### 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.
|
|
|
|
|
|
### Estrutura da Tabela
|
|
|
|
|
|
| Coluna | Tipo | Chave | Restrições | Descrição |
|
|
|
|---------------|-----------|------------|---------------------------------------|------------------------------------------------------------------------|
|
|
|
| `id` | `String` | Primária | `UUID`, `NOT NULL`, `DEFAULT uuid4()` | Identificador único do produto de dados. |
|
|
|
| `dataset_id` | `String` | Estrangeira| `ForeignKey(dataset.id)`, `NOT NULL` | Referência ao dataset que originou o produto. |
|
|
|
| `location_x` | `Numeric` | — | `NOT NULL` | Coordenada X da localização associada ao produto. |
|
|
|
| `location_y` | `Numeric` | — | `NOT NULL` | Coordenada Y da localização associada ao produto. |
|
|
|
| `name` | `String` | — | `NOT NULL` | Nome do produto de dados. |
|
|
|
| `description` | `String` | — | `NOT NULL` | Descrição detalhada do conteúdo do produto. |
|
|
|
| `price` | `Numeric` | — | `NOT NULL` | Preço do produto, usado nas transações. |
|
|
|
| `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. |
|
|
|
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
|
|
|
|
|
|
### Relacionamentos
|
|
|
|
|
|
- `subscriptions`: lista de assinaturas atreladas ao produto de dados.
|
|
|
- `dataset`: vínculo com o dataset que deu origem a este produto (relacionamento de muitos para um).
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
### **DataProductItem**
|
|
|
Relaciona datasets individuais a um data product, permitindo composição flexível de pacotes de dados.
|
|
|
### Descrição
|
|
|
Relaciona um produto de dados a múltiplos datasets, permitindo que um único `data_product` seja composto por diversos `dataset`s. Serve como uma tabela de associação (join table) entre `data_product` e `dataset`.
|
|
|
|
|
|
### Estrutura da Tabela
|
|
|
|
|
|
| Coluna | Tipo | Chave | Restrições | Descrição |
|
|
|
|------------------|------------|------------|-----------------------------------------|----------------------------------------------------------------------------|
|
|
|
| `id` | `String` | Primária | `UUID`, `NOT NULL` | Identificador único da associação entre o produto e o dataset. |
|
|
|
| `data_product_id`| `String` | Estrangeira| `ForeignKey(data_product.id)`, `NOT NULL`| Produto de dados relacionado. |
|
|
|
| `dataset_id` | `String` | Estrangeira| `ForeignKey(dataset.id)`, `NOT NULL` | Dataset que faz parte do produto de dados. |
|
|
|
| `created_at` | `TIMESTAMP`| — | `NOT NULL` | Data de criação do registro. |
|
|
|
| `updated_at` | `TIMESTAMP`| — | `NOT NULL` | Data da última atualização do registro. |
|
|
|
|
|
|
### Observações
|
|
|
|
|
|
- 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
|
|
|
- Todas as chaves primárias são UUIDs para garantir unicidade.
|
... | ... | |