-
Notifications
You must be signed in to change notification settings - Fork 1
Estrutura dos Dados
Este documento contém uma série de modelos de dados e diagramas de banco de dados para diferentes aplicações desse projeto. Cada modelo de dados é descrito com seus campos, relacionamentos e lógica de negócio associada. Os diagramas de banco de dados são gerados usando a ferramenta Mermaid, que permite a visualização de modelos de dados de forma clara e concisa.
Para facilitar a navegação, os modelos de dados estão organizados em ordem alfabética. Cada modelo é descrito com seus campos, relacionamentos e lógica de negócio associada.
- Access
- Account
- Analysis
- AnalysisType
- Area
- Availability
- BDGroup
- BDGroupRole
- BDRole
- BigQueryType
- Career
- CloudTable
- Column
- ColumnOriginalName
- Coverage
- Dataset
- DateTimeRange
- Dictionary
- Domain
- Entity
- EntityCategory
- InformationRequest
- Key
- Language
- License
- ObservationLevel
- Organization
- Pipeline
- QualityCheck
- RawDataSource
- RegistrationToken
- Status
- Subscription
- Table
- TableNeighbor
- Tag
- Theme
- Token
- Update
Modelo que representa os acessos realizados por usuários em um determinado domínio.
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | Identificador único do acesso. | |
user | ForeignKey | Não | Referência ao usuário que realizou o acesso. Relacionado ao modelo Account. | |
token | ForeignKey | Não | Referência ao token utilizado para o acesso. Relacionado ao modelo Token. | |
domain | ForeignKey | Não | Referência ao domínio acessado. Relacionado ao modelo Domain. | |
timestamp | DateTimeField | Não | Data e hora em que o acesso foi realizado. | |
success | BooleanField | Não | False | Indica se o acesso foi bem-sucedido ou não. |
erDiagram
Access {
BigAutoField id
ForeignKey user
ForeignKey token
ForeignKey domain
DateTimeField timestamp
BooleanField success
}
Account {
}
Token {
BigAutoField id
CharField token
BooleanField is_active
DateTimeField created_at
DateTimeField expiry_date
ForeignKey domain
ForeignKey user
}
Domain {
}
Access }o--|| Account: user
Access }o--|| Token: token
Access }o--|| Domain: domain
O modelo Access é utilizado para registrar cada tentativa de acesso realizada por um usuário a um domínio específico, utilizando um token. Cada registro no modelo contém informações cruciais como o usuário que tentou o acesso, o token utilizado, o domínio acessado, a data e hora da tentativa de acesso, e se a tentativa foi bem-sucedida ou não.
A lógica de negócio em torno do modelo Access pode incluir validações de segurança, como verificar se o token é válido e se ainda está ativo, além de armazenar logs de tentativas de acesso para auditoria e análise de padrões de uso. Isso pode ser útil para detectar comportamentos anômalos e prevenir fraudes ou acessos não autorizados.
Modelo que representa uma conta de usuário na aplicação.
Nome do Campo | Tipo SQL | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | Identificador único da conta. | |
password | CharField(128) | Não | Senha do usuário. | |
last_login | DateTimeField | Sim | Data e hora do último login. | |
is_superuser | BooleanField | Não | Indica se o usuário é um superusuário. | |
uuid | UUIDField | Não | f70a7a52-fa49-4fe3-a8d2-1dcdd917aeee | Identificador único universal da conta. |
CharField(254) | Não | Endereço de e-mail do usuário. | ||
username | CharField(40) | Sim | Nome de usuário. | |
first_name | CharField(40) | Não | Primeiro nome do usuário. | |
last_name | CharField(40) | Não | Sobrenome do usuário. | |
full_name | CharField(100) | Sim | Nome completo do usuário. | |
birth_date | DateField | Sim | Data de nascimento do usuário. | |
picture | FileField | Sim | Foto de perfil do usuário. | |
CharField(255) | Sim | Perfil do Twitter do usuário. | ||
CharField(255) | Sim | Perfil do LinkedIn do usuário. | ||
github | CharField(255) | Sim | Perfil do GitHub do usuário. | |
website | CharField(200) | Sim | Website do usuário. | |
description | TextField | Sim | Descrição do usuário. | |
description_pt | TextField | Sim | Descrição do usuário em português. | |
description_en | TextField | Sim | Descrição do usuário em inglês. | |
description_es | TextField | Sim | Descrição do usuário em espanhol. | |
is_admin | BooleanField | Não | Indica se o usuário é um administrador. | |
is_active | BooleanField | Não | Indica se a conta do usuário está ativa. | |
is_email_visible | BooleanField | Não | Indica se o e-mail do usuário é visível para outros usuários. | |
profile | IntegerField | Não | 2 | Perfil do usuário na aplicação. |
created_at | DateTimeField | Não | Data e hora de criação da conta. | |
updated_at | DateTimeField | Não | Data e hora da última atualização da conta. | |
deleted_at | DateTimeField | Sim | Data e hora de exclusão da conta. | |
work_area | TextField | Sim | Área de trabalho do usuário. | |
work_role | TextField | Sim | Função de trabalho do usuário. | |
work_size | TextField | Sim | Tamanho da equipe de trabalho do usuário. | |
work_goal | TextField | Sim | Objetivo do trabalho do usuário. | |
work_data_tool | TextField | Sim | Ferramenta de dados utilizada pelo usuário em seu trabalho. | |
discovery_method | TextField | Sim | Método pelo qual o usuário descobriu a aplicação. | |
available_for_research | TextField | Sim | Disponibilidade do usuário para pesquisas. | |
user_permissions | ManyToManyField | Não | Relacionamento com o modelo Permission para permissões do usuário. | |
organizations | ManyToManyField | Não | Relacionamento com o modelo Organization. | |
groups | ManyToManyField | Não | Relacionamento com o modelo BDGroup. | |
staff_groups | ManyToManyField | Não | Relacionamento com o modelo Group para grupos de funcionários. |
erDiagram
Account {
BigAutoField id
CharField password
DateTimeField last_login
BooleanField is_superuser
UUIDField uuid
CharField email
CharField username
CharField first_name
CharField last_name
CharField full_name
DateField birth_date
FileField picture
CharField twitter
CharField linkedin
CharField github
CharField website
TextField description
TextField description_pt
TextField description_en
TextField description_es
BooleanField is_admin
BooleanField is_active
BooleanField is_email_visible
IntegerField profile
DateTimeField created_at
DateTimeField updated_at
DateTimeField deleted_at
TextField work_area
TextField work_role
TextField work_size
TextField work_goal
TextField work_data_tool
TextField discovery_method
TextField available_for_research
}
Career {
}
Subscription {
}
Token {
}
Access {
}
Customer {
}
Analysis {
}
Table {
}
InformationRequest {
}
Permission {
}
Organization {
}
BDGroup {
}
Group {
}
Account ||--o{ Career : "has"
Account ||--o{ Subscription : "has internal_subscription"
Account }o--o{ Subscription : "has subscription"
Account ||--o{ Token : "has"
Account ||--o{ Access : "has"
Account ||--o{ Customer : "has"
Account }o--o{ Analysis : "has"
Account ||--o{ Table : "has tables_published"
Account ||--o{ Table : "has tables_cleaned"
Account ||--o{ InformationRequest : "has"
Account }o--o{ Permission : "has"
Account }o--o{ Organization : "has"
Account }o--o{ BDGroup : "has"
Account }o--o{ Group : "has"
O modelo Account
representa os usuários do sistema e está relacionado a outras entidades que gerenciam registros de logs, carreiras, assinaturas, tokens, acessos, clientes, análises, tabelas, solicitações de informação, permissões, organizações e grupos. Cada conta de usuário possui informações pessoais e credenciais de acesso, além de configurações de perfil e preferências. A lógica de negócio envolve gerenciamento de credenciais de acesso e autenticação, controle de permissões, gerenciamento de assinaturas e perfis, e integração com redes sociais e ferramentas de trabalho. A estrutura detalhada permite uma robusta gestão de usuários, facilitando a administração e personalização do uso da aplicação.
O modelo Analysis
representa uma análise detalhada com várias características e relacionamentos com outros modelos.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
coverages | ForeignKey | Sim | Relacionamento com o modelo Coverage . |
|
observation_levels | ForeignKey | Sim | Relacionamento com o modelo ObservationLevel . |
|
quality_checks | ForeignKey | Sim | Relacionamento com o modelo QualityCheck . |
|
id | UUIDField | Não | Identificador único da análise. | |
name | CharField(255) | Sim | Nome da análise. | |
name_pt | CharField(255) | Sim | Nome da análise em português. | |
name_en | CharField(255) | Sim | Nome da análise em inglês. | |
name_es | CharField(255) | Sim | Nome da análise em espanhol. | |
description | TextField | Sim | Descrição da análise. | |
description_pt | TextField | Sim | Descrição da análise em português. | |
description_en | TextField | Sim | Descrição da análise em inglês. | |
description_es | TextField | Sim | Descrição da análise em espanhol. | |
analysis_type | ForeignKey | Não | Relacionamento com o modelo AnalysisType . |
|
url | CharField(255) | Sim | URL associada à análise. | |
datasets | ManyToManyField | Não | Relacionamento com o modelo Dataset . |
|
themes | ManyToManyField | Não | Relacionamento com o modelo Theme . |
|
tags | ManyToManyField | Não | Relacionamento com o modelo Tag . |
|
authors | ManyToManyField | Não | Relacionamento com o modelo Account . |
erDiagram
Analysis {
UUID id
CharField name
CharField name_pt
CharField name_en
CharField name_es
TextField description
TextField description_pt
TextField description_en
TextField description_es
CharField url
}
Coverage {}
ObservationLevel {}
QualityCheck {}
AnalysisType {}
Dataset {}
Theme {}
Tag {}
Account {}
Analysis ||--o{ Coverage : coverages
Analysis ||--o{ ObservationLevel : observation_levels
Analysis ||--o{ QualityCheck : quality_checks
Analysis ||--|| AnalysisType : analysis_type
Analysis ||--o{ Dataset : datasets
Analysis ||--o{ Theme : themes
Analysis ||--o{ Tag : tags
Analysis ||--o{ Account : authors
O modelo Analysis
é utilizado para armazenar informações detalhadas sobre uma análise específica. Cada análise pode estar associada a várias coberturas (coverages
), níveis de observação (observation_levels
) e verificações de qualidade (quality_checks
). Além disso, uma análise deve ser classificada por um tipo específico de análise (analysis_type
) e pode estar relacionada a múltiplos conjuntos de dados (datasets
), temas (themes
), tags (tags
) e autores (authors
).
Os campos de nome e descrição estão disponíveis em múltiplos idiomas (português, inglês e espanhol) para suportar uma audiência internacional. A URL (url
) pode ser utilizada para fornecer um link direto para mais informações ou recursos adicionais relacionados à análise.
A estrutura do modelo e seus relacionamentos permitem uma flexibilidade significativa na forma como as análises são categorizadas e associadas a outros elementos do sistema, garantindo uma organização coerente e acessível das informações.
Este modelo representa os tipos de análise que podem ser realizados. Cada tipo de análise tem um identificador único e pode ser traduzido em múltiplos idiomas.
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único do tipo de análise. | |
slug | VARCHAR(255) | Não | Uma string única que pode ser usada na URL. | |
name | VARCHAR(255) | Não | Nome do tipo de análise. | |
name_pt | VARCHAR(255) | Sim | NULL | Nome do tipo de análise em Português. |
name_en | VARCHAR(255) | Sim | NULL | Nome do tipo de análise em Inglês. |
name_es | VARCHAR(255) | Sim | NULL | Nome do tipo de análise em Espanhol. |
erDiagram
AnalysisType {
UUID id
VARCHAR slug
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
}
Analysis {}
AnalysisType ||--o{ Analysis : analyses
O modelo AnalysisType serve para categorizar diferentes tipos de análises que podem ser realizadas dentro do sistema. Cada tipo de análise é identificado de forma única pelo campo id
e possui um slug
que pode ser utilizado em URLs amigáveis. Além do nome principal (name
), o modelo permite a internacionalização ao oferecer campos opcionais para nomes em Português (name_pt
), Inglês (name_en
) e Espanhol (name_es
). A relação com o modelo Analysis
indica que um tipo de análise pode estar associado a muitas análises específicas, facilitando a organização e a categorização dentro da aplicação.
O modelo Area representa uma área específica e suas associações com coberturas, organizações e fontes de dados brutas.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | Não | Identificador único da área. |
slug | SlugField | Não | Não | Identificador curto e único usado na URL. |
name | CharField(255) | Não | Não | Nome da área. |
name_pt | CharField(255) | Sim | Não | Nome da área em Português. |
name_en | CharField(255) | Sim | Não | Nome da área em Inglês. |
name_es | CharField(255) | Sim | Não | Nome da área em Espanhol. |
erDiagram
Area {
UUID id
SlugField slug
CharField name
CharField name_pt
CharField name_en
CharField name_es
}
Coverage {}
Organization {}
RawDataSource {}
Area ||--o{ Coverage: coverages
Area ||--o{ Organization: organizations
Area }o--o{ RawDataSource: raw_data_sources
O modelo Area, como descrito, é crucial para categorizar e organizar diferentes aspectos dentro de um determinado contexto. Cada área está associada a várias coberturas e organizações, indicando que uma área pode abranger múltiplos aspectos e estar sob a gestão de diferentes entidades. Além disso, as áreas podem ser associadas a diversas fontes de dados brutas, permitindo a agregação e análise de dados de várias origens. Este modelo facilita a organização lógica e hierárquica de informações dentro de um sistema, assegurando que cada área tenha uma identificação única (UUID) e possa ser referenciada de maneira consistente através de slugs.
Modelo que representa a disponibilidade de recursos em diferentes fontes de dados.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | - | Identificador único do registro |
slug | SlugField | Não | - | Identificador legível para URL |
name | CharField(255) | Não | - | Nome do recurso |
name_pt | CharField(255) | Sim | - | Nome do recurso em Português |
name_en | CharField(255) | Sim | - | Nome do recurso em Inglês |
name_es | CharField(255) | Sim | - | Nome do recurso em Espanhol |
erDiagram
Availability {
UUID id
SlugField slug
CharField name
CharField name_pt
CharField name_en
CharField name_es
}
RawDataSource {}
RawDataSource ||--o{ Availability : "has many"
O modelo Availability
é utilizado para gerenciar a disponibilidade de recursos em diferentes fontes de dados, representadas pelo modelo RawDataSource
. Cada Availability
está associada a uma ou mais RawDataSource
, permitindo que se tenha um controle granular sobre a disponibilidade de cada recurso em diferentes contextos. O campo slug
facilita a criação de URLs amigáveis para acesso aos registros, enquanto os campos name
, name_pt
, name_en
e name_es
permitem a internacionalização dos nomes dos recursos, tornando o sistema acessível para usuários de diferentes idiomas.
O modelo BDGroup representa um grupo e suas associações com funções específicas e usuários.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | None | Identificador único do grupo. |
name | CharField(255) | Não | None | Nome do grupo, com um limite de 255 caracteres. |
description | TextField | Sim | None | Descrição detalhada do grupo. |
roles | ManyToManyField | Não | None | Campo de muitos para muitos relacionado ao modelo BDRole, que define as funções associadas. |
erDiagram
BDGroup {
BigAutoField id
CharField name
TextField description
}
BDGroupRole {}
Account {}
BDRole {}
BDGroupRole ||--o{ BDGroup: bdgrouprole
Account }o--o{ BDGroup: user
BDRole }o--o{ BDGroup: roles
O modelo BDGroup é usado para organizar diferentes grupos, com cada grupo podendo ter múltiplos usuários (representados pelo modelo Account) e múltiplas funções (representadas pelo modelo BDRole). Cada BDGroup também está associado a um papel específico definido pelo modelo BDGroupRole. Essa estrutura permite uma gestão flexível e escalável de permissões e acessos dentro do sistema, facilitando a administração de usuários e suas respectivas funções dentro de diferentes grupos.
Modelo que define a relação entre grupos e funções dentro de uma organização.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | Nenhum | Identificador único do registro. |
group | ForeignKey | Não | Nenhum | Chave estrangeira referenciando o modelo BDGroup. |
role | ForeignKey | Não | Nenhum | Chave estrangeira referenciando o modelo BDRole. |
organization | ForeignKey | Não | Nenhum | Chave estrangeira referenciando o modelo Organization. |
erDiagram
BDGroupRole {
BigAutoField id
ForeignKey group
ForeignKey role
ForeignKey organization
}
BDGroup {}
BDRole {}
Organization {}
BDGroupRole ||--o{ BDGroup: group
BDGroupRole ||--o{ BDRole: role
BDGroupRole ||--o{ Organization: organization
O modelo BDGroupRole é utilizado para gerenciar as permissões e funções de um grupo dentro de uma organização. Cada registro neste modelo associa um grupo específico a uma função específica dentro de uma organização específica. Isso permite uma gestão granular e flexível das permissões, facilitando a administração de grandes estruturas organizacionais com múltiplos grupos e funções. Cada grupo pode ter múltiplas funções em diferentes organizações, e cada função pode ser associada a múltiplos grupos, permitindo uma estrutura robusta e escalável de controle de acesso.
A tabela BDRole
representa os papéis (roles) que podem ser atribuídos a diferentes grupos e entidades dentro do sistema. Cada papel pode ter várias permissões associadas e pode pertencer a diferentes grupos.
Nome do campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BIGINT | Não | AUTO INCREMENT | Identificador único do papel. |
name | VARCHAR(255) | Não | NULL | Nome do papel. |
description | TEXT | Sim | NULL | Descrição detalhada do papel. |
permissions | MANYTOMANY | Não | NULL | Relação muitos-para-muitos com o modelo Permission . |
erDiagram
BDRole {
BIGINT id
VARCHAR(255) name
TEXT description
}
BDGroup {}
BDGroupRole {}
Permission {}
BDRole ||--o{ BDGroup : "group"
BDRole ||--o{ BDGroupRole : "bdgrouprole"
BDRole ||--o{ Permission : "permissions"
O modelo BDRole
é fundamental para a gestão de permissões e acesso dentro do sistema. Cada papel (BDRole
) pode ser associado a múltiplos grupos (BDGroup
) e pode ter múltiplas permissões (Permission
). Isso permite uma gestão granular das permissões, onde cada papel pode definir um conjunto específico de permissões que podem ser atribuídas a diferentes grupos de usuários. A relação com BDGroupRole
permite que papéis específicos sejam vinculados a grupos específicos, facilitando a organização e a aplicação de permissões de forma estruturada e eficiente.
Modelo que representa um tipo de consulta no BigQuery, com um nome e uma relação com colunas.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
columns | ForeignKey | Não | - | Chave estrangeira que referencia colunas. |
id | UUID | Não | - | Identificador único do tipo UUID. |
name | Char(255) | Não | - | Nome do tipo de consulta no BigQuery. |
erDiagram
BigQueryType {
UUID id
Char name
}
Column {}
BigQueryType ||--o{ Column : "columns"
O modelo BigQueryType é utilizado para representar diferentes tipos de consultas que podem ser executadas no BigQuery. Cada tipo de consulta possui um nome único e está associado a múltiplas colunas através de uma relação de chave estrangeira. Por exemplo, um tipo de consulta pode ser "Relatório de Vendas" e estar associado a colunas como "data_venda", "valor_total", entre outras. A relação entre BigQueryType e Column é de um-para-muitos, significando que um tipo de consulta pode ter várias colunas associadas, mas cada coluna está associada a apenas um tipo de consulta.
O modelo Career
representa a trajetória profissional de um usuário em uma determinada conta.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único do registro | |
account | ForeignKey | Não | Referência a uma conta (relacionado ao modelo Account ) |
|
team | Char(40) | Não | Nome do time em que o usuário está inserido | |
role | Char(40) | Não | Papel ou função desempenhada pelo usuário | |
level | Char(40) | Não | Nível de atuação do usuário (ex: Júnior, Sênior) | |
start_at | Date | Sim | Data de início na função | |
end_at | Date | Sim | Data de término na função (se aplicável) | |
created_at | DateTime | Não | Data e hora de criação do registro | |
updated_at | DateTime | Não | Data e hora da última atualização do registro |
erDiagram
Career {
UUID id
UUID account
Char team
Char role
Char level
Date start_at
Date end_at
DateTime created_at
DateTime updated_at
}
Account {}
Career }o--|| Account: "many to one"
O modelo Career
serve para registrar a trajetória de um usuário dentro de uma conta específica, detalhando o time, a função e o nível de atuação. Este modelo é essencial para acompanhar a evolução e as mudanças de posição dos usuários ao longo do tempo. A data de início (start_at
) e a data de término (end_at
) permitem traçar um histórico preciso das diferentes funções desempenhadas por um usuário. O campo created_at
é utilizado para saber quando o registro foi criado e o campo updated_at
para rastrear a última atualização do registro. Estes campos são importantes para manter a integridade e a rastreabilidade das informações.
Modelo que representa uma tabela específica na nuvem do Google Cloud Platform (GCP).
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | - | Identificador único da tabela |
table | Foreign Key (Table) | Não | - | Referência para o modelo Table |
gcp_project_id | VARCHAR(255) | Não | - | Identificador do projeto no Google Cloud Platform |
gcp_dataset_id | VARCHAR(255) | Não | - | Identificador do dataset no Google Cloud Platform |
gcp_table_id | VARCHAR(255) | Não | - | Identificador da tabela no Google Cloud Platform |
columns | ManyToMany (Column) | Não | - | Referência para as colunas associadas a esta tabela na nuvem |
erDiagram
CloudTable {
UUID id
VARCHAR gcp_project_id
VARCHAR gcp_dataset_id
VARCHAR gcp_table_id
}
Table {}
Column {}
CloudTable ||--o{ Table: table
CloudTable }o--o{ Column: columns
O modelo CloudTable
é utilizado para mapear uma tabela localizada no Google Cloud Platform (GCP) a um registro local. Cada CloudTable
está associada a um Table
local que guarda sua configuração básica e a um conjunto de Column
que define a estrutura dos dados presentes na tabela na nuvem. A ligação entre os modelos permite uma abstração e gerenciamento mais eficiente das tabelas e colunas no GCP, possibilitando operações como sincronização, atualizações e consultas estruturadas baseadas nas definições locais.
O modelo Column
representa uma coluna em uma tabela de banco de dados e contém informações detalhadas sobre suas propriedades e relações com outros modelos.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
order | PositiveIntegerField | Não | Ordem da coluna na tabela. | |
id | UUIDField | Não | Identificador único da coluna (UUID). | |
table | ForeignKey | Não | Relacionamento com o modelo Table (muitos para um). |
|
name | CharField(255) | Não | Nome da coluna. | |
name_pt | CharField(255) | Sim | Nome da coluna em português. | |
name_en | CharField(255) | Sim | Nome da coluna em inglês. | |
name_es | CharField(255) | Sim | Nome da coluna em espanhol. | |
name_staging | CharField(255) | Sim | Nome da coluna na tabela de staging. | |
name_staging_pt | CharField(255) | Sim | Nome da coluna na tabela de staging em português. | |
name_staging_en | CharField(255) | Sim | Nome da coluna na tabela de staging em inglês. | |
name_staging_es | CharField(255) | Sim | Nome da coluna na tabela de staging em espanhol. | |
bigquery_type | ForeignKey | Não | Relacionamento com o modelo BigQueryType (muitos para um). |
|
description | TextField | Sim | Descrição da coluna. | |
description_pt | TextField | Sim | Descrição da coluna em português. | |
description_en | TextField | Sim | Descrição da coluna em inglês. | |
description_es | TextField | Sim | Descrição da coluna em espanhol. | |
covered_by_dictionary | BooleanField | Sim | False | Indica se a coluna é coberta por um dicionário. |
is_primary_key | BooleanField | Sim | False | Indica se a coluna é chave primária. |
directory_primary_key | ForeignKey | Sim | Relacionamento com o modelo Column (muitos para um), representando a chave primária no diretório. |
|
measurement_unit | CharField(255) | Sim | Unidade de medida da coluna. | |
contains_sensitive_data | BooleanField | Sim | False | Indica se a coluna contém dados sensíveis. |
observations | TextField | Sim | Observações sobre a coluna. | |
observations_pt | TextField | Sim | Observações sobre a coluna em português. | |
observations_en | TextField | Sim | Observações sobre a coluna em inglês. | |
observations_es | TextField | Sim | Observações sobre a coluna em espanhol. | |
is_in_staging | BooleanField | Não | True | Indica se a coluna está na tabela de staging. |
is_partition | BooleanField | Não | False | Indica se a coluna é uma partição. |
observation_level | ForeignKey | Sim | Relacionamento com o modelo ObservationLevel (muitos para um). |
|
version | IntegerField | Sim | Versão da coluna. | |
status | ForeignKey | Sim | Relacionamento com o modelo Status (muitos para um). |
|
is_closed | BooleanField | Não | False | Indica se a coluna está fechada. |
erDiagram
Column {
UUID id
PositiveInteger order
CharField name
CharField name_pt
CharField name_en
CharField name_es
CharField name_staging
CharField name_staging_pt
CharField name_staging_en
CharField name_staging_es
TextField description
TextField description_pt
TextField description_en
TextField description_es
BooleanField covered_by_dictionary
BooleanField is_primary_key
CharField measurement_unit
BooleanField contains_sensitive_data
TextField observations
TextField observations_pt
TextField observations_en
TextField observations_es
BooleanField is_in_staging
BooleanField is_partition
IntegerField version
BooleanField is_closed
}
Coverage ||--o{ Column: "coverages"
Column ||--o{ Column: "columns"
ColumnOriginalName ||--o{ Column: "column_original_names"
Dictionary ||--o{ Column: "dictionaries"
CloudTable ||--o{ Column: "cloud_tables"
QualityCheck ||--o{ Column: "quality_checks"
Table ||--o{ Column: "table"
BigQueryType ||--o{ Column: "bigquery_type"
Column ||--o{ Column: "directory_primary_key"
ObservationLevel ||--o{ Column: "observation_level"
Status ||--o{ Column: "status"
O modelo Column
é vital para a estrutura de dados desse projeto, pois define as propriedades e relações de uma coluna dentro de uma tabela. Cada coluna pode ter uma variedade de metadados, incluindo nomes em diferentes idiomas, descrições detalhadas e informações sobre sensibilidade de dados. Além disso, o modelo gerencia as chaves primárias, as partições e a associação com dicionários e tipos de dados específicos no BigQuery. A inclusão do campo order
permite organizar a sequência das colunas, enquanto os campos relacionados a observações e versões facilitam o rastreamento de mudanças e comentários. A lógica de negócio também considera a integração com tabelas de staging, garantindo que os dados sejam preparados adequadamente antes do carregamento final.
Descrição resumida do modelo: O modelo ColumnOriginalName
armazena os nomes originais das colunas em diferentes idiomas, além de fazer referência a coberturas (coverages
) e colunas (columns
).
Nome do Campo | Tipo (SQL) | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
coverages | UUID | Sim | Chave estrangeira relacionada ao modelo Coverage com um relacionamento um-para-muitos (one-to-many) |
|
id | UUID | Não | Identificador único do registro | |
column | UUID | Não | Chave estrangeira relacionada ao modelo Column com um relacionamento muitos-para-um (many-to-one) |
|
name | VARCHAR(255) | Não | Nome original da coluna | |
name_pt | VARCHAR(255) | Sim | Nome da coluna em português | |
name_en | VARCHAR(255) | Sim | Nome da coluna em inglês | |
name_es | VARCHAR(255) | Sim | Nome da coluna em espanhol |
erDiagram
ColumnOriginalName {
UUID coverages
UUID id
UUID column
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
}
Coverage {}
Column {}
ColumnOriginalName ||--o{ Coverage : "one-to-many"
ColumnOriginalName }o--|| Column : "many-to-one"
O modelo ColumnOriginalName
serve para armazenar os nomes das colunas em diferentes idiomas, facilitando a internacionalização e a localização do sistema. Cada registro liga uma coluna a seus nomes em português, inglês e espanhol, permitindo que o sistema exiba as informações corretas para os usuários com base no idioma selecionado. Além disso, o modelo é vinculado a coberturas (coverages
), o que pode ser útil para segmentar ou categorizar colunas em diferentes contextos ou domínios de aplicação.
Este modelo representa uma cobertura de dados, associando várias entidades e permitindo a rastreabilidade e o controle sobre diferentes aspectos e fontes de dados.
Nome do Campo | Tipo | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
datetime_ranges | UUID | Não | Chave estrangeira relacionada ao modelo DateTimeRange com uma relação de um para muitos. |
|
id | UUID | Não | Identificador único para a cobertura. | |
table | UUID | Não | Chave estrangeira relacionada ao modelo Table com uma relação de muitos para um. |
|
raw_data_source | UUID | Não | Chave estrangeira relacionada ao modelo RawDataSource com uma relação de muitos para um. |
|
information_request | UUID | Não | Chave estrangeira relacionada ao modelo InformationRequest com uma relação de muitos para um. |
|
column | UUID | Não | Chave estrangeira relacionada ao modelo Column com uma relação de muitos para um. |
|
column_original_name | UUID | Não | Chave estrangeira relacionada ao modelo ColumnOriginalName com uma relação de muitos para um. |
|
key | UUID | Não | Chave estrangeira relacionada ao modelo Key com uma relação de muitos para um. |
|
analysis | UUID | Não | Chave estrangeira relacionada ao modelo Analysis com uma relação de muitos para um. |
|
area | UUID | Não | Chave estrangeira relacionada ao modelo Area com uma relação de muitos para um. |
|
is_closed | Boolean | Não | False | Indica se a cobertura está fechada. |
erDiagram
Coverage {
UUID datetime_ranges
UUID id
UUID table
UUID raw_data_source
UUID information_request
UUID column
UUID column_original_name
UUID key
UUID analysis
UUID area
Boolean is_closed
}
DateTimeRange {}
Table {}
RawDataSource {}
InformationRequest {}
Column {}
ColumnOriginalName {}
Key {}
Analysis {}
Area {}
Coverage }o--|| DateTimeRange : "one to many"
Coverage }|--|| Table : "many to one"
Coverage }|--|| RawDataSource : "many to one"
Coverage }|--|| InformationRequest : "many to one"
Coverage }|--|| Column : "many to one"
Coverage }|--|| ColumnOriginalName : "many to one"
Coverage }|--|| Key : "many to one"
Coverage }|--|| Analysis : "many to one"
Coverage }|--|| Area : "many to one"
O modelo Coverage
é central para a gestão de dados, permitindo a associação de várias entidades como colunas, tabelas, fontes de dados brutas, análises e áreas específicas. A cobertura pode representar um intervalo de datas através de uma relação de um para muitos com DateTimeRange
, permitindo múltiplos intervalos para uma única cobertura. A flag is_closed
indica se a cobertura está finalizada, ajudando no controle de processos que dependem da conclusão dessas coberturas. Este modelo é crucial para rastrear e gerenciar a origem e o status dos dados ao longo de diferentes estágios de processamento e análise.
O modelo Dataset representa um conjunto de dados que pode ser analisado, visualizado e utilizado para diversos fins dentro da aplicação. Ele está associado a várias entidades importantes, como análises, tabelas, fontes de dados brutas, solicitações de informações, verificações de qualidade, entre outras. Este modelo é essencial para a organização e gerenciamento de dados na aplicação.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | Identificador único para cada conjunto de dados. | |
slug | SlugField | Não | Identificador curto e legível para URLs. | |
name | CharField(255) | Não | Nome do conjunto de dados. | |
name_pt | CharField(255) | Sim | NULL | Nome do conjunto de dados em Português. |
name_en | CharField(255) | Sim | NULL | Nome do conjunto de dados em Inglês. |
name_es | CharField(255) | Sim | NULL | Nome do conjunto de dados em Espanhol. |
description | TextField | Sim | NULL | Descrição detalhada do conjunto de dados. |
description_pt | TextField | Sim | NULL | Descrição detalhada em Português. |
description_en | TextField | Sim | NULL | Descrição detalhada em Inglês. |
description_es | TextField | Sim | NULL | Descrição detalhada em Espanhol. |
organization | ForeignKey | Não | Referência à organização proprietária do conjunto de dados. | |
version | IntegerField | Sim | NULL | Versão do conjunto de dados. |
status | ForeignKey | Sim | NULL | Status atual do conjunto de dados. |
created_at | DateTimeField | Não | Data e hora de criação do conjunto de dados. | |
updated_at | DateTimeField | Não | Data e hora da última atualização do conjunto de dados. | |
is_closed | BooleanField | Não | Indica se o conjunto de dados está fechado para modificações. | |
page_views | BigIntegerField | Não | 0 | Número de visualizações da página do conjunto de dados. |
themes | ManyToManyField | Não | Temas associados ao conjunto de dados. | |
tags | ManyToManyField | Não | Tags associadas ao conjunto de dados. | |
analyses | ManyToManyField | Sim | Análises relacionadas ao conjunto de dados. |
erDiagram
Dataset {
UUID id
SlugField slug
CharField name
CharField name_pt
CharField name_en
CharField name_es
TextField description
TextField description_pt
TextField description_en
TextField description_es
IntegerField version
DateTimeField created_at
DateTimeField updated_at
BooleanField is_closed
BigIntegerField page_views
}
Analysis {}
Table {}
RawDataSource {}
InformationRequest {}
QualityCheck {}
Organization {}
Status {}
Theme {}
Tag {}
Dataset ||--o{ Analysis : "analyses"
Dataset ||--o{ Table : "tables"
Dataset ||--o{ RawDataSource : "raw_data_sources"
Dataset ||--o{ InformationRequest : "information_requests"
Dataset ||--o{ QualityCheck : "quality_checks"
Dataset }o--|| Organization : "organization"
Dataset }o--|| Status : "status"
Dataset }o--o{ Theme : "themes"
Dataset }o--o{ Tag : "tags"
O modelo Dataset é fundamental para a gestão de conjuntos de dados na aplicação. Ele permite a associação de dados com diferentes níveis de descrição e categorização em múltiplos idiomas, facilitando a acessibilidade e interpretação dos dados por usuários de diferentes regiões. Através de suas relações com outros modelos, como análises, tabelas, fontes de dados brutas, solicitações de informações e verificações de qualidade, o Dataset oferece uma visão completa e integrada dos dados. Além disso, o controle de versão e status permite um gerenciamento eficiente das atualizações e do ciclo de vida dos conjuntos de dados. A contagem de visualizações da página do conjunto de dados ajuda a monitorar seu uso e popularidade. A lógica de negócio se beneficia da estrutura robusta e flexível para atender a diversas necessidades analíticas e de gerenciamento de dados.
O modelo DateTimeRange
representa um intervalo de tempo com precisão até segundos. Ele está relacionado ao modelo Coverage
, indicando que um intervalo de tempo é coberto por uma cobertura específica.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | None | Identificador único do intervalo de tempo. |
start_year | IntegerField | Sim | None | Ano de início do intervalo. |
start_semester | IntegerField | Sim | None | Semestre de início do intervalo. |
start_quarter | IntegerField | Sim | None | Trimestre de início do intervalo. |
start_month | IntegerField | Sim | None | Mês de início do intervalo. |
start_day | IntegerField | Sim | None | Dia de início do intervalo. |
start_hour | IntegerField | Sim | None | Hora de início do intervalo. |
start_minute | IntegerField | Sim | None | Minuto de início do intervalo. |
start_second | IntegerField | Sim | None | Segundo de início do intervalo. |
end_year | IntegerField | Sim | None | Ano de término do intervalo. |
end_semester | IntegerField | Sim | None | Semestre de término do intervalo. |
end_quarter | IntegerField | Sim | None | Trimestre de término do intervalo. |
end_month | IntegerField | Sim | None | Mês de término do intervalo. |
end_day | IntegerField | Sim | None | Dia de término do intervalo. |
end_hour | IntegerField | Sim | None | Hora de término do intervalo. |
end_minute | IntegerField | Sim | None | Minuto de término do intervalo. |
end_second | IntegerField | Sim | None | Segundo de término do intervalo. |
interval | IntegerField | Sim | None | Intervalo de tempo. |
is_closed | BooleanField | Não | None | Indica se o intervalo está fechado. |
erDiagram
DateTimeRange {
UUID id
UUID coverage_id
INTEGER start_year
INTEGER start_semester
INTEGER start_quarter
INTEGER start_month
INTEGER start_day
INTEGER start_hour
INTEGER start_minute
INTEGER start_second
INTEGER end_year
INTEGER end_semester
INTEGER end_quarter
INTEGER end_month
INTEGER end_day
INTEGER end_hour
INTEGER end_minute
INTEGER end_second
INTEGER interval
BOOLEAN is_closed
}
Coverage {}
DateTimeRange }o--|| Coverage: coverage_id
O modelo DateTimeRange
é utilizado para definir intervalos de tempo específicos, que podem variar em precisão desde anos até segundos. Ele está diretamente associado a uma Coverage
, o que implica que cada intervalo de tempo pertence a uma cobertura específica.
A lógica de negócio pode incluir validações para garantir que o intervalo de tempo é válido (por exemplo, a data de início deve ser anterior à data de término) e que os intervalos não se sobrepõem para uma mesma cobertura. A propriedade is_closed
indica se o intervalo é fechado, ou seja, se já não pode ser modificado ou se está finalizado. Isso pode ser útil para cenários onde intervalos de tempo precisam ser congelados ou arquivados.
Este modelo representa um dicionário que mapeia chaves a colunas em um banco de dados.
Nome do Campo | Tipo (SQL) | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | Identificador único universal do dicionário. | |
column | ForeignKey | Não | Chave estrangeira relacionada ao modelo Column . |
erDiagram
Dictionary {
UUID id
ForeignKey keys
ForeignKey column
}
Key {}
Column {}
Dictionary ||--o{ Key: keys
Dictionary }o--|| Column: column
O modelo Dictionary
armazena a relação entre keys
e columns
, onde uma chave pode estar associada a várias colunas e uma coluna pode estar associada a vários dicionários. O campo id
serve como identificador único para cada entrada no dicionário. Essa estrutura permite a criação de mapas complexos de chaves para colunas, facilitando a organização e a recuperação de dados dentro do banco de dados.
O modelo Domain representa um domínio na aplicação, contendo informações sobre tokens, acessos e detalhes gerais como nome, descrição e status de atividade.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | - | Identificador único do domínio. |
name | CharField(255) | Não | - | Nome do domínio. |
description | TextField | Sim | - | Descrição detalhada do domínio. |
created_at | DateTimeField | Não | - | Data e hora de criação do domínio. |
updated_at | DateTimeField | Não | - | Data e hora da última atualização do domínio. |
is_active | BooleanField | Não | True | Indica se o domínio está ativo. |
erDiagram
Domain {
BigAutoField id
CharField name
TextField description
DateTimeField created_at
DateTimeField updated_at
BooleanField is_active
}
Token {}
Access {}
Domain ||--o{ Token: "tokens"
Domain ||--o{ Access: "accesses"
O modelo Domain é central na aplicação, representando diferentes domínios que podem ter múltiplos tokens e acessos associados. O campo is_active
permite ativar ou desativar um domínio, enquanto created_at
e updated_at
ajudam a manter o rastreamento temporal das alterações. As chaves estrangeiras tokens
e accesses
estabelecem relações de um-para-muitos com os modelos Token e Access, respectivamente, permitindo que um domínio tenha múltiplos tokens e acessos. Isso é útil para gerenciar permissões e autenticações de forma organizada.
O modelo Entity
representa uma entidade que possui atributos como identificador único, nomes em diferentes idiomas e categorias.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único da entidade. | |
slug | Slug | Não | Identificador legível por URL. | |
name | Char(255) | Não | Nome da entidade. | |
name_pt | Char(255) | Sim | Nome da entidade em português. | |
name_en | Char(255) | Sim | Nome da entidade em inglês. | |
name_es | Char(255) | Sim | Nome da entidade em espanhol. | |
category | ForeignKey | Não | Categoria da entidade, relacionado ao modelo EntityCategory . |
erDiagram
Entity {
UUID id
Slug slug
Char name
Char name_pt
Char name_en
Char name_es
UUID category
UUID updates
UUID observation_levels
}
EntityCategory {}
Update {}
ObservationLevel {}
EntityCategory ||--o{ Entity : "has many"
Update ||--|{ Entity : "has many"
ObservationLevel ||--|{ Entity : "has many"
O modelo Entity
serve como uma representação central de entidades no sistema, cada uma identificada por um UUID único e um slug
amigável para URLs. O campo name
é obrigatório, enquanto os campos de nome em diferentes idiomas (name_pt
, name_en
, name_es
) são opcionais, permitindo suporte multilíngue.
Cada entidade está associada a uma categoria específica através de uma ForeignKey
para o modelo EntityCategory
, indicando a classificação da entidade. Além disso, uma entidade pode ter múltiplas atualizações (updates
), representadas pelo modelo Update
, e diferentes níveis de observação (observation_levels
), representados pelo modelo ObservationLevel
.
Essa estrutura permite uma organização flexível e expansível das entidades, suportando funcionalidades como categorização, histórico de atualizações e níveis de observação.
EntityCategory é um modelo que representa categorias que podem ser associadas a entidades. Esse modelo permite a categorização de entidades em diferentes idiomas.
Nome do Campo | Tipo SQL | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único do modelo | |
slug | VARCHAR (SlugField) | Não | Identificador único legível por URL | |
name | VARCHAR(255) | Não | Nome da categoria | |
name_pt | VARCHAR(255) | Sim | Nome da categoria em português | |
name_en | VARCHAR(255) | Sim | Nome da categoria em inglês | |
name_es | VARCHAR(255) | Sim | Nome da categoria em espanhol |
erDiagram
EntityCategory {
UUID id
VARCHAR slug
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
UUID entities
}
Entity {}
EntityCategory ||--o{ Entity : "entities"
O modelo EntityCategory permite a categorização de entidades em diferentes idiomas, facilitando a organização e a busca por entidades específicas com base em categorias. Cada categoria pode ter um nome em múltiplos idiomas, proporcionando uma experiência de usuário mais inclusiva e acessível. A chave estrangeira entities
relaciona uma categoria a várias entidades, permitindo que uma entidade pertença a múltiplas categorias. A lógica de negócio pode incluir validações para garantir que o slug
seja único e que pelo menos um dos campos de nome (name
, name_pt
, name_en
, name_es
) esteja preenchido.
Modelo que representa uma solicitação de informações dentro do sistema.
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
order | PositiveIntegerField | Não | Ordem da solicitação de informações. | |
id | UUIDField | Não | Identificador único da solicitação de informações. | |
dataset | ForeignKey | Não | Relacionamento com o modelo Dataset (muitos para um). |
|
version | IntegerField | Sim | Versão da solicitação de informações. | |
status | ForeignKey | Sim | Relacionamento com o modelo Status (muitos para um). |
|
created_at | DateTimeField | Não | Data e hora de criação da solicitação de informações. | |
updated_at | DateTimeField | Não | Data e hora da última atualização da solicitação de informações. | |
origin | TextField | Sim | Origem da solicitação de informações. | |
number | CharField(255) | Não | ? | |
url | CharField(500) | Sim | URL associada à solicitação de informações. | |
started_at | DateTimeField | Sim | Data e hora de início da solicitação de informações. | |
data_url | CharField(500) | Sim | URL dos dados associados à solicitação de informações. | |
observations | TextField | Sim | Observações gerais sobre a solicitação de informações. | |
observations_pt | TextField | Sim | Observações em português sobre a solicitação de informações. | |
observations_en | TextField | Sim | Observações em inglês sobre a solicitação de informações. | |
observations_es | TextField | Sim | Observações em espanhol sobre a solicitação de informações. | |
started_by | ForeignKey | Sim | Relacionamento com o modelo Account (muitos para um), referente ao usuário que iniciou. |
erDiagram
InformationRequest {
UUIDField id
PositiveIntegerField order
IntegerField version
DateTimeField created_at
DateTimeField updated_at
TextField origin
CharField number
CharField url
DateTimeField started_at
CharField data_url
TextField observations
TextField observations_pt
TextField observations_en
TextField observations_es
}
Coverage {}
Update {}
ObservationLevel {}
QualityCheck {}
Dataset {}
Status {}
Account {}
InformationRequest ||--o{ Coverage: coverages
InformationRequest ||--o{ Update: updates
InformationRequest ||--o{ ObservationLevel: observation_levels
InformationRequest ||--o{ QualityCheck: quality_checks
InformationRequest }o--|| Dataset: dataset
InformationRequest }o--|| Status: status
InformationRequest }o--|| Account: started_by
O modelo InformationRequest
é crucial para o gerenciamento de solicitações de informações dentro do sistema. Ele permite a rastreabilidade e organização de diversas solicitações que podem ser feitas a partir de diferentes datasets, com múltiplos níveis de observação e verificações de qualidade. Cada solicitação possui um identificador único (UUID), uma ordem específica, e é associada a um dataset e status específicos. Além disso, o modelo permite armazenar observações em múltiplos idiomas, facilitando a internacionalização. O campo started_by
relaciona a solicitação ao usuário que a iniciou, garantindo a responsabilidade e rastreabilidade das ações realizadas.
Este modelo representa uma chave que está associada a uma cobertura, verificações de qualidade e um dicionário específico.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Nenhum | Identificador único da chave |
dictionary | ForeignKey | Não | Nenhum | Chave estrangeira para o modelo Dictionary |
name | CharField(255) | Não | Nenhum | Nome da chave |
value | CharField(255) | Não | Nenhum | Valor associado à chave |
erDiagram
Key {
UUID id
CharField name
CharField value
ForeignKey dictionary
ForeignKey coverages
ForeignKey quality_checks
}
Dictionary {}
Coverage {}
QualityCheck {}
Key ||--o{ Coverage: coverages
Key ||--o{ QualityCheck: quality_checks
Key }o--|| Dictionary: dictionary
O modelo Key
é usado para armazenar pares de chave-valor que são específicos a um dicionário. Cada chave pode estar associada a múltiplas coberturas (Coverage
) e verificações de qualidade (QualityCheck
). O campo dictionary
é obrigatório, indicando que uma chave deve sempre pertencer a um dicionário específico. As coberturas e verificações de qualidade são opcionais, permitindo uma flexibilidade na definição das chaves.
Modelo que representa um idioma com várias fontes de dados brutas associadas.
Nome do Campo | Tipo SQL | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id |
UUIDField | Não | None | Identificador único do idioma |
slug |
SlugField | Não | None | Identificador curto e legível para URLs |
name |
CharField(255) | Não | None | Nome do idioma |
name_pt |
CharField(255) | Sim | None | Nome do idioma em português |
name_en |
CharField(255) | Sim | None | Nome do idioma em inglês |
name_es |
CharField(255) | Sim | None | Nome do idioma em espanhol |
erDiagram
Language {
UUID id
String slug
String name
String name_pt
String name_en
String name_es
}
RawDataSource {}
Language ||--|{ RawDataSource : "raw_data_sources"
O modelo Language
é utilizado para representar diferentes idiomas disponíveis em uma aplicação. Ele possui uma relação muitos para muitos com o modelo RawDataSource
, que armazena várias fontes de dados brutas associadas a cada idioma. Isso permite que um idioma possa estar associado a várias fontes de dados e vice-versa.
Cada idioma é identificado por um UUID
único e possui um slug
que facilita a criação de URLs amigáveis. Além do nome principal (name
), o modelo permite armazenar o nome do idioma em português (name_pt
), inglês (name_en
) e espanhol (name_es
), facilitando a internacionalização e localização da aplicação.
Este modelo representa uma licença que pode estar relacionada a diferentes tabelas e fontes de dados brutas. Ele contém informações detalhadas sobre a licença, incluindo identificadores únicos e nomes em diferentes idiomas.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | Identificador único universal da licença. | |
slug | SlugField | Não | Identificador curto e único para a licença, geralmente usado em URLs. | |
name | CharField(255) | Não | Nome da licença. | |
name_pt | CharField(255) | Sim | Nome da licença em português. | |
name_en | CharField(255) | Sim | Nome da licença em inglês. | |
name_es | CharField(255) | Sim | Nome da licença em espanhol. | |
url | CharField(200) | Não | URL onde mais informações sobre a licença podem ser encontradas. |
erDiagram
License {
UUID id
string slug
string name
string name_pt
string name_en
string name_es
string url
}
Table {}
RawDataSource {}
License ||--o{ Table: tables
License ||--o{ RawDataSource: raw_data_sources
O modelo License
serve para gerenciar as licenças associadas a diferentes tabelas e fontes de dados brutas. Cada licença deve ter um identificador único (id
) e um slug
para facilitar a referência nas URLs. O nome da licença pode ser armazenado em três idiomas diferentes para suportar a internacionalização. A URL fornece um link para mais informações sobre a licença. As relações com os modelos Table
e RawDataSource
indicam que uma licença pode estar associada a várias tabelas e fontes de dados brutas, permitindo uma gestão centralizada das permissões e condições de uso dos dados.
O modelo ObservationLevel
representa um nível de observação que possui relações com diversas outras entidades, incluindo colunas, entidades, tabelas, fontes de dados brutas, solicitações de informações e análises.
Nome do Campo | Tipo | Pode ser Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | Identificador único para cada instância de ObservationLevel . |
|
entity | ForeignKey | Não | Chave estrangeira que referencia o modelo Entity , representando a entidade associada ao nível de observação. |
|
table | ForeignKey | Sim | Chave estrangeira que referencia o modelo Table , representando a tabela associada ao nível de observação. |
|
raw_data_source | ForeignKey | Sim | Chave estrangeira que referencia o modelo RawDataSource , representando a fonte de dados bruta associada. |
|
information_request | ForeignKey | Sim | Chave estrangeira que referencia o modelo InformationRequest , representando a solicitação de informação associada. |
|
analysis | ForeignKey | Sim | Chave estrangeira que referencia o modelo Analysis , representando a análise associada ao nível de observação. |
erDiagram
ObservationLevel {
UUID id
UUID entity
UUID table
UUID raw_data_source
UUID information_request
UUID analysis
}
Column {}
Entity {}
Table {}
RawDataSource {}
InformationRequest {}
Analysis {}
ObservationLevel ||--o{ Column: columns
ObservationLevel }o--|| Entity: entity
ObservationLevel }o--|| Table: table
ObservationLevel }o--|| RawDataSource: raw_data_source
ObservationLevel }o--|| InformationRequest: information_request
ObservationLevel }o--|| Analysis: analysis
O modelo ObservationLevel
é crucial para a estruturação e organização de dados observacionais dentro do sistema. Cada instância do nível de observação pode estar associada a múltiplas colunas, definindo os dados a serem observados. A relação com a entidade (entity) é obrigatória, garantindo que cada nível de observação esteja claramente vinculado a uma entidade específica. Relações opcionais com tabelas, fontes de dados brutas, solicitações de informações e análises permitem uma flexibilidade significativa no uso e na aplicação dos níveis de observação, ajudando a integrar e correlacionar dados de diversas origens e contextos analíticos.
O modelo Organization
representa uma entidade organizacional que pode estar associada a vários usuários, datasets, tabelas parceiras e áreas. Ele armazena informações detalhadas sobre a organização, incluindo nomes em diferentes idiomas, descrições, links para redes sociais e uma imagem de perfil.
Nome do Campo | Tipo SQL | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Nenhum | Identificador único da organização. |
slug | VARCHAR(255) | Não | Nenhum | Identificador curto e legível usado em URLs. |
name | VARCHAR(255) | Não | Nenhum | Nome da organização. |
name_pt | VARCHAR(255) | Sim | Nenhum | Nome da organização em português. |
name_en | VARCHAR(255) | Sim | Nenhum | Nome da organização em inglês. |
name_es | VARCHAR(255) | Sim | Nenhum | Nome da organização em espanhol. |
description | TEXT | Sim | Nenhum | Descrição detalhada da organização. |
description_pt | TEXT | Sim | Nenhum | Descrição detalhada da organização em português. |
description_en | TEXT | Sim | Nenhum | Descrição detalhada da organização em inglês. |
description_es | TEXT | Sim | Nenhum | Descrição detalhada da organização em espanhol. |
area | UUID (ForeignKey) | Não | Nenhum | Referência à área relacionada à organização. |
created_at | TIMESTAMP | Não | Nenhum | Data e hora de criação do registro. |
updated_at | TIMESTAMP | Não | Nenhum | Data e hora da última atualização do registro. |
website | VARCHAR(255) | Sim | Nenhum | URL do site da organização. |
VARCHAR(200) | Sim | Nenhum | URL do perfil do Twitter da organização. | |
VARCHAR(200) | Sim | Nenhum | URL do perfil do Facebook da organização. | |
VARCHAR(200) | Sim | Nenhum | URL do perfil do LinkedIn da organização. | |
VARCHAR(200) | Sim | Nenhum | URL do perfil do Instagram da organização. | |
picture | BLOB | Sim | Nenhum | Arquivo de imagem representando a organização. |
erDiagram
Organization {
UUID id
VARCHAR slug
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
TEXT description
TEXT description_pt
TEXT description_en
TEXT description_es
UUID area
TIMESTAMP created_at
TIMESTAMP updated_at
VARCHAR website
VARCHAR twitter
VARCHAR facebook
VARCHAR linkedin
VARCHAR instagram
BLOB picture
}
BDGroupRole {}
Account {}
Dataset {}
Table {}
Area {}
Organization ||--o{ BDGroupRole: "group_role"
Organization }o--o{ Account: "user"
Organization ||--o{ Dataset: "datasets"
Organization ||--o{ Table: "partner_tables"
Organization }o--|| Area: "area"
O modelo Organization
é utilizado para gerenciar e armazenar informações sobre organizações, permitindo a associação com usuários, datasets e tabelas parceiras. A lógica de negócio envolve garantir que cada organização tenha um identificador único e campos obrigatórios preenchidos como id
, slug
, name
e area
. O modelo também deve suportar internacionalização com campos de nome e descrição em diferentes idiomas. Além disso, ele deve permitir a fácil integração com redes sociais e a inclusão de uma imagem de perfil. As relações com os modelos BDGroupRole
, Account
, Dataset
, Table
e Area
são essenciais para manter a integridade referencial e a consistência dos dados associados.
Modelo que representa um pipeline de dados, que é responsável por definir e executar uma sequência de processos para transformar dados de entrada em dados de saída.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | N/A | Identificador único do pipeline. |
github_url | VARCHAR(200) | Não | N/A | URL do repositório no GitHub onde o código do pipeline está armazenado. |
erDiagram
Pipeline {
UUID id
VARCHAR(200) github_url
UUID tables
UUID quality_checks
}
Table {}
QualityCheck {}
Pipeline ||--o{ Table : "tables"
Pipeline ||--o{ QualityCheck : "quality_checks"
O modelo Pipeline é usado para representar uma sequência de operações que transformam dados em uma ou mais tabelas. Cada pipeline possui um identificador único, uma URL no GitHub onde o código que define o pipeline está armazenado, e referências a tabelas e verificações de qualidade. A URL do GitHub é um campo obrigatório para garantir que o código do pipeline esteja versionado e acessível. A relação com o modelo Table indica quais tabelas são processadas pelo pipeline, enquanto a relação com o modelo QualityCheck especifica quais verificações de qualidade são aplicadas aos dados durante ou após o processamento.
O modelo QualityCheck é utilizado para armazenar informações sobre verificações de qualidade realizadas em diferentes componentes do sistema, como pipelines, análises, datasets, tabelas, colunas, chaves, fontes de dados brutas e solicitações de informação.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único da verificação de qualidade. | |
name | Char(255) | Sim | Nome da verificação de qualidade. | |
name_pt | Char(255) | Sim | Nome da verificação de qualidade em português. | |
name_en | Char(255) | Sim | Nome da verificação de qualidade em inglês. | |
name_es | Char(255) | Sim | Nome da verificação de qualidade em espanhol. | |
description | Text | Sim | Descrição detalhada da verificação de qualidade. | |
description_pt | Text | Sim | Descrição detalhada da verificação de qualidade em português. | |
description_en | Text | Sim | Descrição detalhada da verificação de qualidade em inglês. | |
description_es | Text | Sim | Descrição detalhada da verificação de qualidade em espanhol. | |
passed | Boolean | Não | Indica se a verificação de qualidade foi aprovada ou não. | |
created_at | DateTime | Não | Data e hora de criação do registro. | |
updated_at | DateTime | Não | Data e hora da última atualização do registro. | |
pipeline | ForeignKey | Sim | Referência ao modelo Pipeline, indicando a pipeline relacionada. | |
analysis | ForeignKey | Sim | Referência ao modelo Analysis, indicando a análise relacionada. | |
dataset | ForeignKey | Sim | Referência ao modelo Dataset, indicando o dataset relacionado. | |
table | ForeignKey | Sim | Referência ao modelo Table, indicando a tabela relacionada. | |
column | ForeignKey | Sim | Referência ao modelo Column, indicando a coluna relacionada. | |
key | ForeignKey | Sim | Referência ao modelo Key, indicando a chave relacionada. | |
raw_data_source | ForeignKey | Sim | Referência ao modelo RawDataSource, indicando a fonte de dados bruta relacionada. | |
information_request | ForeignKey | Sim | Referência ao modelo InformationRequest, indicando a solicitação de informação relacionada. |
erDiagram
QualityCheck {
UUID id
Char(255) name
Char(255) name_pt
Char(255) name_en
Char(255) name_es
Text description
Text description_pt
Text description_en
Text description_es
Boolean passed
DateTime created_at
DateTime updated_at
UUID pipeline_id
UUID analysis_id
UUID dataset_id
UUID table_id
UUID column_id
UUID key_id
UUID raw_data_source_id
UUID information_request_id
}
Pipeline {}
Analysis {}
Dataset {}
Table {}
Column {}
Key {}
RawDataSource {}
InformationRequest {}
QualityCheck ||--o{ Pipeline : "pipeline"
QualityCheck ||--o{ Analysis : "analysis"
QualityCheck ||--o{ Dataset : "dataset"
QualityCheck ||--o{ Table : "table"
QualityCheck ||--o{ Column : "column"
QualityCheck ||--o{ Key : "key"
QualityCheck ||--o{ RawDataSource : "raw_data_source"
QualityCheck ||--o{ InformationRequest : "information_request"
O modelo QualityCheck é essencial para garantir a integridade e a qualidade dos dados e processos dentro do sistema. Ele permite rastrear e documentar verificações de qualidade em várias partes do sistema, como pipelines, análises, datasets, tabelas, colunas, chaves, fontes de dados brutas e solicitações de informação. Cada verificação de qualidade pode ser associada a um ou mais desses componentes, fornecendo um registro detalhado das verificações realizadas e seus resultados. Através deste modelo, é possível identificar rapidamente quaisquer problemas ou falhas nos processos de manipulação e análise de dados, possibilitando ações corretivas imediatas e garantindo a confiabilidade dos dados e processos do sistema.
O modelo RawDataSource
representa uma fonte de dados brutos que pode conter informações estruturadas ou não, disponibilizadas por diversas entidades. Este modelo armazena diversas propriedades da fonte de dados, incluindo informações de licenciamento, disponibilidade e requisitos de acesso.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único da fonte de dados. | |
name | Char(255) | Não | Nome da fonte de dados. | |
name_pt | Char(255) | Sim | Nome da fonte de dados em português. | |
name_en | Char(255) | Sim | Nome da fonte de dados em inglês. | |
name_es | Char(255) | Sim | Nome da fonte de dados em espanhol. | |
description | Text | Sim | Descrição detalhada da fonte de dados. | |
description_pt | Text | Sim | Descrição detalhada da fonte de dados em português. | |
description_en | Text | Sim | Descrição detalhada da fonte de dados em inglês. | |
description_es | Text | Sim | Descrição detalhada da fonte de dados em espanhol. | |
url | Char(500) | Sim | URL para acessar a fonte de dados. | |
order | PositiveInteger | Não | Ordem de prioridade ou exibição da fonte de dados. | |
dataset | ForeignKey (Dataset) | Não | Relacionamento com o modelo Dataset . |
|
availability | ForeignKey (Availability) | Não | Relacionamento com o modelo Availability . |
|
license | ForeignKey (License) | Sim | Relacionamento com o modelo License . |
|
created_at | DateTime | Não | Data de criação do registro. | |
updated_at | DateTime | Não | Data da última atualização do registro. | |
contains_structured_data | Boolean | Não | Indica se a fonte de dados contém dados estruturados. | |
contains_api | Boolean | Não | Indica se a fonte de dados fornece uma API. | |
is_free | Boolean | Não | Indica se a fonte de dados é gratuita. | |
required_registration | Boolean | Não | Indica se é necessário registro para acessar a fonte de dados. | |
version | Integer | Sim | Versão da fonte de dados. | |
status | ForeignKey (Status) | Sim | Relacionamento com o modelo Status . |
|
area_ip_address_required | ManyToManyField (Area) | Não | Relacionamento com o modelo Area . |
erDiagram
RawDataSource {
UUID id
Char name
Char name_pt
Char name_en
Char name_es
Text description
Text description_pt
Text description_en
Text description_es
Char url
PositiveInteger order
DateTime created_at
DateTime updated_at
Boolean contains_structured_data
Boolean contains_api
Boolean is_free
Boolean required_registration
Integer version
}
Dataset ||--o{ RawDataSource: contains
Availability ||--o{ RawDataSource: contains
License ||--o{ RawDataSource: contains
Status ||--o{ RawDataSource: contains
Coverage ||--o{ RawDataSource: contains
Update ||--o{ RawDataSource: contains
ObservationLevel ||--o{ RawDataSource: contains
QualityCheck ||--o{ RawDataSource: contains
Table ||--o{ RawDataSource: contains
Language ||--o{ RawDataSource: contains
Area ||--o{ RawDataSource: contains
O modelo RawDataSource
é essencial para o gerenciamento e catalogação das diversas fontes de dados brutos disponíveis. Cada fonte de dados pode ser associada a múltiplas tabelas, níveis de observação e verificações de qualidade. O campo order
pode ser utilizado para priorizar ou ordenar a apresentação das fontes de dados em uma interface de usuário. As relações com modelos como Dataset
, Availability
, License
, e Status
permitem um controle granular sobre a disponibilidade, licenciamento e estado atual da fonte de dados. A presença de campos booleanos como contains_structured_data
, contains_api
, is_free
, e required_registration
facilita a filtragem e categorização das fontes de dados com base em suas características e requisitos de acesso.
O modelo RegistrationToken
é utilizado para gerenciar tokens de registro, que são usados para validar e ativar contas de usuário no sistema.
Nome do Campo | Tipo SQL | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | N/A | Identificador único do token de registro. |
token | CharField(255) | Não | N/A | O token de registro em si, uma string única. |
created_at | DateTimeField | Não | N/A | Data e hora de criação do token. |
used_at | DateTimeField | Sim | N/A | Data e hora em que o token foi utilizado. |
active | BooleanField | Não | True | Indica se o token ainda está ativo ou não. |
erDiagram
RegistrationToken {
BigAutoField id
CharField token
DateTimeField created_at
DateTimeField used_at
BooleanField active
}
O modelo RegistrationToken
desempenha um papel crucial na segurança do processo de registro de usuários. Cada token gerado é único e associado a uma tentativa de registro específica. Quando um usuário se cadastra, um novo token é criado e enviado ao usuário (geralmente via email). O token deve ser validado dentro de um período de tempo definido, após o qual ele pode ser marcado como usado (used_at
é preenchido) e inativado (active
é definido como False
). Isso garante que apenas usuários com acesso ao token válido possam ativar suas contas, prevenindo registros não autorizados.
O modelo Status
representa o estado ou condição de outros modelos dentro do sistema. Ele possui relacionamentos com os modelos Dataset
, Table
, Column
, RawDataSource
e InformationRequest
, indicando que cada um desses modelos pode ter múltiplos estados associados.
Nome do Campo | Tipo | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | - | Identificador único do status |
slug | SlugField | Não | - | Identificador curto e único, usado para URLs e referências rápidas |
name | CharField(255) | Não | - | Nome do status |
name_pt | CharField(255) | Sim | - | Nome do status em Português |
name_en | CharField(255) | Sim | - | Nome do status em Inglês |
name_es | CharField(255) | Sim | - | Nome do status em Espanhol |
erDiagram
Status {
UUID id
SlugField slug
CharField name
CharField name_pt
CharField name_en
CharField name_es
}
Dataset {}
Table {}
Column {}
RawDataSource {}
InformationRequest {}
Status ||--o{ Dataset : datasets
Status ||--o{ Table : tables
Status ||--o{ Column : columns
Status ||--o{ RawDataSource : raw_data_sources
Status ||--o{ InformationRequest : information_requests
O modelo Status
é essencial para rastrear e gerenciar o estado de outros componentes importantes do sistema, como Dataset
, Table
, Column
, RawDataSource
e InformationRequest
. Cada Status
contém informações de identificação e nomes em múltiplos idiomas, possibilitando a internacionalização. A lógica de negócio para Status
pode incluir validações para garantir que cada slug
seja único e que os nomes sejam consistentes e significativos para os usuários. Além disso, as mudanças de status podem acionar eventos específicos no sistema, como notificações ou atualizações em cascata nos objetos relacionados.
O modelo Subscription é utilizado para representar uma assinatura dentro do sistema. Ele armazena informações sobre a criação, atualização, status de atividade e relações com outros modelos, como Account.
Nome do Campo | Tipo (SQL) | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
created_at | DATETIME | Não | Data e hora da criação da assinatura. | |
updated_at | DATETIME | Não | Data e hora da última atualização da assinatura. | |
id | UUID | Não | Identificador único da assinatura. | |
is_active | BOOLEAN | Não | Indica se a assinatura está ativa. | |
admin | UUID (ForeignKey) | Não | Referência ao modelo Account, indicando o administrador da assinatura. | |
subscription | UUID (OneToOne) | Sim | Referência a outra assinatura do djstripe | |
subscribers | UUID (ManyToMany) | Não | Relação com o modelo Account, indicando os assinantes. |
erDiagram
Subscription {
UUID id
DATETIME created_at
DATETIME updated_at
BOOLEAN is_active
UUID admin
UUID djstripe_subscription
UUID subscribers
}
Account {}
Subscription ||--o{ Account : "subscribers"
Subscription ||--o{ DjstripeSubscription : "djstripe_subscription"
Subscription }o--|| Account : "admin"
O modelo Subscription é essencial para gerenciar as assinaturas no sistema. Ele permite rastrear quando uma assinatura foi criada e atualizada, além de determinar se a assinatura está ativa ou não. A relação com o modelo Account é crucial, pois define quem é o administrador da assinatura e quais contas são assinantes. O campo subscription
linka a Subscription com o modelo criado pela lib djstripe. A lógica de negócios pode incluir verificações para garantir que as assinaturas ativas estejam sempre atualizadas e que os administradores tenham permissões adequadas para gerenciar os assinantes.
Este modelo representa uma tabela de dados e contém uma variedade de campos para armazenar informações sobre a tabela, como descrições, status, licença, organização parceira, entre outros.
Nome do Campo | Tipo (SQL) | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
coverages | ForeignKey | Sim | Relacionamento com o modelo Coverage (um para muitos). |
|
updates | ForeignKey | Sim | Relacionamento com o modelo Update (um para muitos). |
|
tableneighbor_a_set | ForeignKey | Sim | Relacionamento com o modelo TableNeighbor (um para muitos). |
|
tableneighbor_b_set | ForeignKey | Sim | Relacionamento com o modelo TableNeighbor (um para muitos). |
|
columns | ForeignKey | Sim | Relacionamento com o modelo Column (um para muitos). |
|
cloud_tables | ForeignKey | Sim | Relacionamento com o modelo CloudTable (um para muitos). |
|
observation_levels | ForeignKey | Sim | Relacionamento com o modelo ObservationLevel (um para muitos). |
|
quality_checks | ForeignKey | Sim | Relacionamento com o modelo QualityCheck (um para muitos). |
|
order | PositiveIntegerField | Não | Ordem da tabela. | |
id | UUIDField | Não | Identificador único da tabela. | |
slug | SlugField | Não | Identificador único em formato de slug. | |
name | CharField(255) | Não | Nome da tabela. | |
name_pt | CharField(255) | Sim | Nome da tabela em português. | |
name_en | CharField(255) | Sim | Nome da tabela em inglês. | |
name_es | CharField(255) | Sim | Nome da tabela em espanhol. | |
description | TextField | Sim | Descrição da tabela. | |
description_pt | TextField | Sim | Descrição da tabela em português. | |
description_en | TextField | Sim | Descrição da tabela em inglês. | |
description_es | TextField | Sim | Descrição da tabela em espanhol. | |
dataset | ForeignKey | Não | Relacionamento com o modelo Dataset (muitos para um). |
|
version | IntegerField | Sim | Versão da tabela. | |
status | ForeignKey | Sim | Relacionamento com o modelo Status (muitos para um). |
|
license | ForeignKey | Sim | Relacionamento com o modelo License (muitos para um). |
|
partner_organization | ForeignKey | Sim | Relacionamento com o modelo Organization (muitos para um). |
|
pipeline | ForeignKey | Sim | Relacionamento com o modelo Pipeline (muitos para um). |
|
is_directory | BooleanField | Sim | Indica se a tabela é um diretório. | |
created_at | DateTimeField | Não | Data e hora de criação da tabela. | |
updated_at | DateTimeField | Não | Data e hora da última atualização da tabela. | |
published_by | ForeignKey | Sim | Relacionamento com o modelo Account (muitos para um). |
|
data_cleaned_by | ForeignKey | Sim | Relacionamento com o modelo Account (muitos para um). |
|
data_cleaning_description | TextField | Sim | Descrição da limpeza de dados. | |
data_cleaning_code_url | CharField(200) | Sim | URL do código de limpeza de dados. | |
raw_data_url | CharField(500) | Sim | URL dos dados brutos. | |
auxiliary_files_url | CharField(200) | Sim | URL dos arquivos auxiliares. | |
architecture_url | CharField(200) | Sim | URL da arquitetura da tabela. | |
source_bucket_name | CharField(255) | Sim | basedosdados | Nome do bucket de origem. |
uncompressed_file_size | BigIntegerField | Sim | Tamanho do arquivo descompactado. | |
compressed_file_size | BigIntegerField | Sim | Tamanho do arquivo compactado. | |
number_rows | BigIntegerField | Sim | Número de linhas da tabela. | |
number_columns | BigIntegerField | Sim | Número de colunas da tabela. | |
is_closed | BooleanField | Não | Indica se a tabela está fechada. | |
page_views | BigIntegerField | Não | Número de visualizações da página da tabela. | |
raw_data_source | ManyToManyField | Não | Relacionamento com o modelo RawDataSource (muitos para muitos). |
erDiagram
Table {
UUID id
PositiveInteger order
Slug slug
Char name
Char name_pt
Char name_en
Char name_es
Text description
Text description_pt
Text description_en
Text description_es
Integer version
Boolean is_directory
DateTime created_at
DateTime updated_at
Text data_cleaning_description
Char data_cleaning_code_url
Char raw_data_url
Char auxiliary_files_url
Char architecture_url
Char source_bucket_name
BigInteger uncompressed_file_size
BigInteger compressed_file_size
BigInteger number_rows
BigInteger number_columns
Boolean is_closed
BigInteger page_views
}
Coverage {}
Update {}
TableNeighbor {}
Column {}
CloudTable {}
ObservationLevel {}
QualityCheck {}
Dataset {}
Status {}
License {}
Organization {}
Pipeline {}
Account {}
RawDataSource {}
Table ||--o{ Coverage : coverages
Table ||--o{ Update : updates
Table ||--o{ TableNeighbor : tableneighbor_a_set
Table ||--o{ TableNeighbor : tableneighbor_b_set
Table ||--o{ Column : columns
Table ||--o{ CloudTable : cloud_tables
Table ||--o{ ObservationLevel : observation_levels
Table ||--o{ QualityCheck : quality_checks
Table }o--|| Dataset : dataset
Table }o--|| Status : status
Table }o--|| License : license
Table }o--|| Organization : partner_organization
Table }o--|| Pipeline : pipeline
Table }o--|| Account : published_by
Table }o--|| Account : data_cleaned_by
Table }o--o{ RawDataSource : raw_data_source
O modelo Table
é um componente central no sistema, representando uma coleção de dados estruturados. Ele está fortemente relacionado a diversos outros modelos, como Coverage
, Update
, TableNeighbor
, Column
, CloudTable
, ObservationLevel
, QualityCheck
, Dataset
, Status
, License
, Organization
, Pipeline
, Account
, e RawDataSource
.
A lógica de negócio para este modelo inclui a capacidade de manter informações detalhadas sobre a tabela, como descrições multilíngues, URLs para dados brutos e arquivos auxiliares, e metadados como o número de linhas e colunas.
Além disso, a tabela pode ser associada a um dataset específico e pode ser marcada como fechada (is_closed
). O campo page_views
é usado para rastrear a popularidade da tabela. As relações com outros modelos permitem a integração e a manutenção de dados relacionados, como verificações de qualidade e níveis de observação.
A tabela também suporta a versão e o status, facilitando o gerenciamento de diferentes versões e estados da tabela ao longo do tempo. A relação com Account
permite o rastreamento de quem publicou e limpou os dados, indicando a responsabilidade e a origem da manutenção dos dados.
O modelo TableNeighbor é utilizado para armazenar informações sobre a similaridade entre duas instâncias do modelo Table. Ele contém campos que registram diferentes tipos de similaridade entre essas instâncias.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | BigAutoField | Não | Identificador único do registro. | |
table_a | ForeignKey | Não | Referência para a instância do modelo Table (muitos para um). | |
table_b | ForeignKey | Não | Referência para outra instância do modelo Table (muitos para um). | |
similarity | FloatField | Não | Similaridade geral entre table_a e table_b. | |
similarity_of_area | FloatField | Não | Similaridade baseada na área entre table_a e table_b. | |
similarity_of_datetime | FloatField | Não | Similaridade baseada na data e hora entre table_a e table_b. | |
similarity_of_directory | FloatField | Não | Similaridade baseada no diretório entre table_a e table_b. | |
similarity_of_popularity | FloatField | Não | Similaridade baseada na popularidade entre table_a e table_b. |
erDiagram
TableNeighbor {
BigAutoField id
FloatField similarity
FloatField similarity_of_area
FloatField similarity_of_datetime
FloatField similarity_of_directory
FloatField similarity_of_popularity
}
Table {}
TableNeighbor ||--o{ Table : "table_a"
TableNeighbor ||--o{ Table : "table_b"
O modelo TableNeighbor é essencial para determinar a similaridade entre duas instâncias do modelo Table. Isso pode ser útil em várias aplicações, como recomendação de tabelas semelhantes, agrupamento de dados e análise comparativa. Cada campo de similaridade específica (área, data/hora, diretório, popularidade) permite uma análise detalhada e refinada dos diferentes aspectos que podem influenciar na similaridade geral entre as tabelas. Essa granularidade de dados possibilita a criação de algoritmos mais precisos e personalizados para diversas necessidades analíticas e operacionais.
O modelo Tag é utilizado para categorizar e organizar outros elementos no sistema, como análises e conjuntos de dados, através de relações muitos-para-muitos.
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único universal (UUID) do tag. | |
slug | VARCHAR | Não | Identificador curto e único para URLs amigáveis. | |
name | VARCHAR(255) | Não | Nome da tag. | |
name_pt | VARCHAR(255) | Sim | NULL | Nome da tag em português. |
name_en | VARCHAR(255) | Sim | NULL | Nome da tag em inglês. |
name_es | VARCHAR(255) | Sim | NULL | Nome da tag em espanhol. |
created_at | DATETIME | Não | CURRENT_TIMESTAMP | Data e hora de criação do registro. |
updated_at | DATETIME | Não | CURRENT_TIMESTAMP | Data e hora da última atualização do registro. |
erDiagram
TAG {
UUID id
VARCHAR slug
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
DATETIME created_at
DATETIME updated_at
}
ANALYSIS {}
DATASET {}
TAG ||--o{ ANALYSIS: analyses
TAG ||--o{ DATASET: datasets
O modelo Tag é fundamental para a categorização e organização de dados no sistema. Cada tag pode estar associada a múltiplas análises e conjuntos de dados, facilitando a busca e filtragem de informações através de palavras-chave específicas. A utilização do campo slug
garante URLs amigáveis e únicas para cada tag, enquanto os campos de nome em diferentes idiomas permitem a internacionalização do sistema, proporcionando uma experiência de usuário mais robusta e acessível para falantes de diferentes línguas. A manutenção das datas de criação e atualização possibilita um melhor rastreamento e auditoria das operações realizadas sobre as tags.
O modelo Theme representa um tema específico que pode ser associado a várias análises e conjuntos de dados. Este modelo é usado para categorizar e organizar dados de maneira significativa.
Nome do Campo | Tipo (SQL) | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUID | Não | Identificador único do tema. | |
slug | VARCHAR(255) | Não | Identificador amigável para URLs do tema. | |
name | VARCHAR(255) | Não | Nome do tema. | |
name_pt | VARCHAR(255) | Sim | NULL | Nome do tema em português. |
name_en | VARCHAR(255) | Sim | NULL | Nome do tema em inglês. |
name_es | VARCHAR(255) | Sim | NULL | Nome do tema em espanhol. |
created_at | TIMESTAMP | Não | Data e hora de criação do tema. | |
updated_at | TIMESTAMP | Não | Data e hora da última atualização do tema. |
erDiagram
Theme {
UUID id
VARCHAR slug
VARCHAR name
VARCHAR name_pt
VARCHAR name_en
VARCHAR name_es
TIMESTAMP created_at
TIMESTAMP updated_at
}
Analysis {}
Dataset {}
Theme }o--o{ Analysis : "analyses"
Theme }o--o{ Dataset : "datasets"
O modelo Theme é essencial para a categorização e organização de análises e conjuntos de dados em uma aplicação. Cada tema pode estar associado a múltiplas análises e múltiplos conjuntos de dados, permitindo uma estrutura flexível e escalável. A utilização de campos de nome em diferentes idiomas (português, inglês e espanhol) facilita a internacionalização e o acesso a usuários de diferentes regiões. Os campos de data e hora de criação e atualização auxiliam no rastreamento e gerenciamento das informações ao longo do tempo.
Modelo que representa os tokens utilizados para autenticação ou outras finalidades relacionadas a usuários, domínios e acessos.
Nome do Campo | Tipo (SQL) | É Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
accesses | ForeignKey | Sim | N/A | Chave estrangeira relacionada ao modelo Access com uma relação de um para muitos. |
id | BigAutoField | Não | N/A | Identificador único do token. |
user | ForeignKey | Não | N/A | Chave estrangeira relacionada ao modelo Account com uma relação de muitos para um. |
domain | ForeignKey | Não | N/A | Chave estrangeira relacionada ao modelo Domain com uma relação de muitos para um. |
token | CharField(255) | Não | N/A | String que armazena o valor do token. |
created_at | DateTimeField | Não | N/A | Data e hora de criação do token. |
is_active | BooleanField | Não | True | Indica se o token está ativo. |
expiry_date | DateTimeField | Sim | N/A | Data e hora de expiração do token. |
erDiagram
Token {
BigAutoField id
CharField token
BooleanField is_active
DateTimeField created_at
DateTimeField expiry_date
ForeignKey domain
ForeignKey user
}
Access {}
Account {}
Domain {}
Token ||--o{ Access : accesses
Token }o--|| Account : user
Token }o--|| Domain : domain
O modelo Token é essencial para gerenciar a autenticação e autorização de usuários em diferentes domínios. Cada token é associado a um usuário específico (user) e a um domínio específico (domain), garantindo que as permissões e acessos sejam corretamente delimitados. Tokens podem ser ativados ou desativados (is_active) e têm uma data de criação (created_at) e, opcionalmente, uma data de expiração (expiry_date). A relação com o modelo Access permite rastrear e gerenciar os acessos feitos utilizando cada token, possibilitando uma auditoria e controle mais granular sobre as operações realizadas no sistema.
O modelo Update
é responsável por armazenar informações sobre atualizações de entidades. Ele contém campos para identificar a entidade, a frequência da atualização, possíveis atrasos e metadados adicionais.
Nome do Campo | Tipo | Nulo | Valor Padrão | Descrição |
---|---|---|---|---|
id | UUIDField | Não | - | Identificador único da atualização. |
entity | ForeignKey | Não | - | Referência à entidade relacionada (Entity ). |
frequency | IntegerField | Não | - | Frequência da atualização, em dias. |
lag | IntegerField | Sim | NULL | Atraso na atualização, em dias. |
latest | DateTimeField | Sim | NULL | Data e hora da última atualização. |
table | ForeignKey | Sim | NULL | Referência à tabela relacionada (Table ). |
raw_data_source | ForeignKey | Sim | NULL | Referência à fonte de dados bruta relacionada (RawDataSource ). |
information_request | ForeignKey | Sim | NULL | Referência ao pedido de informação relacionado (InformationRequest ). |
erDiagram
Update {
UUID id
UUID entity_id
INTEGER frequency
INTEGER lag
DATETIME latest
UUID table_id
UUID raw_data_source_id
UUID information_request_id
}
Entity {}
Table {}
RawDataSource {}
InformationRequest {}
Update }o--|| Entity: entity_id
Update }o--|| Table: table_id
Update }o--|| RawDataSource: raw_data_source_id
Update }o--|| InformationRequest: information_request_id
O modelo Update
é essencial para rastrear a frequência e a pontualidade das atualizações para entidades específicas. A lógica de negócio pode envolver o uso do campo frequency
para determinar quando uma nova atualização é necessária. O campo lag
pode ser utilizado para monitorar e gerenciar atrasos nas atualizações. As referências a outros modelos (Entity
, Table
, RawDataSource
, InformationRequest
) permitem uma integração abrangente com outras partes do sistema, facilitando a busca e o gerenciamento das atualizações de dados de maneira eficiente e estruturada.