Camada Bronze

A camada Bronze contém dois esquemas de dados distintos, cada um atendendo a aspectos diferentes da plataforma de telemática e inteligência de negócios:

  • raw_business_data - contendo tabelas, atributos e valores relacionados às informações de negócios, como veículos, funcionários, geocercas adicionadas pelos usuários, etc.

  • raw_telematics_data - contendo tabelas, atributos e valores relacionados aos dados telemáticos transmitidos por dispositivos sob monitoramento, como localizações, entradas, saídas e eventos.

Cada esquema é otimizado para seu domínio de dados específico e padrões de acesso, fornecendo cobertura abrangente das necessidades de operação, telemática e gerenciamento de ativos.

raw_business_data estrutura

Este esquema contém mais de 40 tabelas cuidadosamente selecionadas para cobrir vários aspectos e casos de uso do negócio. Essas tabelas representam suas entidades principais de negócio, estrutura organizacional e dados operacionais.

circle-info

O diagrama interativo do esquema raw_business_data está disponível em dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Encontre os detalhes do esquema raw business data abaixo.

chevron-rightesquema raw_business_datahashtag

Frequência de atualização

Os dados neste esquema são sincronizados com o DB principal. Atualizações ocorrem incrementalmente conforme alterações acontecem no banco de dados MySQL de origem, tipicamente em menos de 5 minutos após a alteração na origem.

description_parameters

O sistema inclui dados de referência para padronizar valores em todo o banco de dados:

Tipo de referência
Descrição
Valores de exemplo

Definições de tipo

Tipos de entidade padrão

vehicle_type: car, truck, bus

Códigos de status

Valores de status de tarefas e do sistema

tasks_status: unassigned, assigned, done

Definições de unidade

Unidades de medida para sensores

units_type: liter, gallon, celsius

Classificações de entidade

Categorias de entidade empresarial

entities_type: place, task, customer

Tabelas-chave por categoria

As tabelas no raw_business_data esquema estão organizadas em categorias funcionais para facilitar a navegação. A tabela abaixo resume as tabelas-chave por sua finalidade de negócio:

Entidades principais de negócio

chevron-rightusershashtag

Finalidade: Informações de conta e perfil do usuário

Atributo
Detalhes

Campos-chave

user_id, company_label, first_name, last_name, middle_name, locale, timezone_label, master_id, registration_datetime

Relacionamentos

Usuário pai via master_id, vinculado a employees, departments, places, tasks através de user_id

Observações especiais

Entidade central que conecta dados organizacionais; master_id habilita hierarquias de usuários para estruturas de conta em múltiplos níveis

chevron-rightemployeeshashtag

Finalidade: Registros de funcionários e motoristas com detalhes de habilitação e atribuição

Atributo
Detalhes

Campos-chave

employee_id, user_id, object_id, department_id, first_name, last_name, driver_license_number, driver_license_valid_till, hardware_key

Relacionamentos

Vínculos a users, departments, objects (rastreado atribuído), rastreado em driver_history e checkins

Observações especiais

A chave de hardware permite identificação do motorista via iButton ou RFID; suporta geofencing com latitude, longitude, raio campos

chevron-rightdepartmentshashtag

Finalidade: Unidades organizacionais com localização geográfica

Atributo
Detalhes

Campos-chave

department_id, user_id, department_label, latitude, longitude, raio, endereço

Relacionamentos

Vincula funcionários à estrutura organizacional através de department_id

Observações especiais

Campos de localização suportam análises baseadas em geofencing para relatórios em nível de departamento

Rastreamento e monitoramento

chevron-rightdeviceshashtag

Finalidade: Informações do dispositivo de rastreamento físico e status de rede

Atributo
Detalhes

Campos-chave

device_id, owner_id, device_imei, phone, status_listing_id, network_label, signal_level, has_roaming, created_at

Relacionamentos

Entidade central vinculada a objects, models, sensor_description, counters; owner_id references users.user_id

Observações especiais

Todos os dados telemáticos em raw_telematics_data esquema referenciam esta tabela via device_id

chevron-rightobjectshashtag

Finalidade: Entidades monitoradas (veículos, ativos, pessoal)

Atributo
Detalhes

Campos-chave

object_id, client_id, device_id, object_label, model, group_id, create_datetime, is_deleted

Relacionamentos

Hub central conectando dispositivos a usuários (client_id), detalhes do veículo, histórico de rastreamento, tarefas e regras

Observações especiais

Representa a "unidade rastreável" no sistema; um objeto por dispositivo em uso ativo

chevron-rightmodelshashtag

Finalidade: Especificações de hardware do dispositivo e capacidades

Atributo
Detalhes

Campos-chave

model_id, model, vendor, alternative_label, analog_amount, digital_amount, outputs_amount, has_battery_level, has_altitude, has_phone

Conteúdo

Flags booleanas de capacidade indicam quais campos de dados estão disponíveis a partir deste tipo de dispositivo

Observações especiais

Use as flags de capacidade para determinar sensores e entradas válidas ao consultar dados telemáticos

chevron-rightsensor_descriptionhashtag

Finalidade: Dados de configuração e calibração de sensores

Atributo
Detalhes

Campos-chave

sensor_id, device_id, sensor_label, input_label, sensor_type, units_type, multiplier, divider, accuracy, calibration_data

Relacionamentos

Vincula entradas do dispositivo (de raw_telematics_data.inputs) à lógica de negócio através de device_id e input_label matching

Observações especiais

calibration_data (JSONB) armazena tabelas de calibração específicas do sensor para sensores de nível de combustível; multiplier e divider converte valores brutos em unidades

Gerenciamento de ativos

chevron-rightvehicleshashtag

Finalidade: Especificações do veículo, documentação e parâmetros operacionais

Atributo
Detalhes

Campos-chave

vehicle_id, user_id, object_id, garage_id, vehicle_label, registration_number, vin, manufacture_year, fuel_type, fuel_cost, standard_fuel_consumption, max_speed

Relacionamentos

Vínculos a objects (rastreador atual), garages (local de serviço), vehicle_service_tasks; rastreado em vehicle_trackers_history

Observações especiais

Campos de dimensão física (payload_length, payload_width, payload_height, gross_weight) suportam análises de planejamento de carga; datas de seguro permitem rastreamento de conformidade

chevron-rightgarageshashtag

Finalidade: Locais de serviços e manutenção

Atributo
Detalhes

Campos-chave

garage_id, user_id, latitude, longitude, raio, endereço, organization_label, mechanic_name, dispatcher_name

Relacionamentos

Referenciado por vehicles.garage_id para atribuição de local de serviço

Observações especiais

Campos de localização permitem detecção de visitas de serviço baseada em geofence e análise de proximidade

chevron-rightvehicle_service_taskshashtag

Finalidade: Cronogramas de manutenção e histórico de serviço

Atributo
Detalhes

Campos-chave

service_task_id, vehicle_id, description, status, cost, start_date, end_date, completion_date, predicted_datetime, mileage_limit, engine_hours_limit

Conteúdo

Suporta três tipos de gatilho: baseado em data, baseado em quilometragem, baseado em horas de motor; configurações de notificação para email, SMS, push

Observações especiais

is_repeat e campos de intervalo permitem cronogramas de manutenção recorrentes; is_unplanned distingue manutenção programada de reativa

Localização e roteamento

chevron-rightzoneshashtag

Finalidade: Áreas com geofence para monitoramento e automação

Atributo
Detalhes

Campos-chave

zone_id, client_id, zone_label, zone_type, latitude, longitude, circle_center_latitude, circle_center_longitude, raio, endereço, color

Conteúdo

Os tipos de zona incluem círculo, polígono (definido via geofence_points), e classificações de áreas especiais

Relacionamentos

Referenciado por rules2zones, users2zones; vértices do polígono armazenados em geofence_points

Observações especiais

Funções PostGIS podem ser usadas para verificar ponto-em-polígono para análises complexas de geofences

chevron-rightplaceshashtag

Finalidade: Pontos de interesse com atributos personalizados

Atributo
Detalhes

Campos-chave

place_id, user_id, place_label, latitude, longitude, raio, endereço, description, external_id, custom_fields

Relacionamentos

Estendido com valores de campos personalizados através de places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Observações especiais

custom_fields JSONB fornece acesso rápido; tabelas relacionadas permitem filtragem e ordenação por atributos personalizados

chevron-rightgeofence_pointshashtag

Finalidade: Coordenadas de vértices de polígono para formas complexas de geofence

Atributo
Detalhes

Campos-chave

zone_id, number, latitude, longitude

Relacionamentos

Múltiplos registros por zone_id definem limites do polígono; number campo determina a ordem dos vértices

Observações especiais

Consulte com ORDER BY number para reconstruir o caminho do polígono; use com PostGIS ST_MakePolygon para operações geométricas

Gerenciamento de tarefas e fluxo de trabalho

chevron-righttaskshashtag

Finalidade: Atribuições de ordem de serviço e rastreamento de execução

Atributo
Detalhes

Campos-chave

task_id, user_id, object_id, parent_task_id, task_label, status, task_type, latitude, longitude, raio, arrival_datetime, created_at, status_change_datetime, custom_fields

Conteúdo

Suporta tarefas hierárquicas via parent_task_id; janelas de tempo definidas por time_from/time_to; validação de geofence com localização e raio

Relacionamentos

Vínculos a forms (coleta de dados), task_history (mudanças de status), objects (rastreador atribuído)

Observações especiais

stay_duration e arrival_duration_minutes habilitam monitoramento de conformidade para tarefas de entrega e serviço

chevron-rightformshashtag

Finalidade: Formulários de coleta de dados e submissões

Atributo
Detalhes

Campos-chave

form_id, task_id, object_id, form_label, campos, values, submitted_at, submission_latitude, submission_longitude, is_submission_in_zone

Conteúdo

campos define a estrutura do formulário (JSON); values contém dados submetidos (JSON)

Relacionamentos

Vínculos a tasks (ordem de serviço associada), objects (submetente), referenciado em checkins

Observações especiais

Flag de validação de localização is_submission_in_zone habilita regras de submissão de formulário baseadas em geofence

chevron-rightcheckinshashtag

Finalidade: Registros de presença e atividade baseados em localização

Atributo
Detalhes

Campos-chave

checkin_id, employee_id, object_id, form_id, user_id, planned_datetime, actual_datetime, latitude, longitude, raio, endereço, comentário

Relacionamentos

Conecta funcionários a formulários e locais; rastreia desvios do cronograma planejado

Observações especiais

Variação de tempo entre planned_datetime e actual_datetime habilita relatórios de pontualidade; o raio define a tolerância de localização aceitável

chevron-righttask_historyhashtag

Finalidade: Trilha de auditoria para eventos do ciclo de vida da tarefa

Atributo
Detalhes

Campos-chave

task_history_id, task_id, user_id, atividade, event_datetime, payload

Conteúdo

Tipos de atividade definidos em description_parametrs; payload armazena detalhes específicos do evento (texto)

Observações especiais

Essencial para análise de conclusão de tarefas, relatórios de transição de status e rastreamento de atividade de usuários

Regras e automação

chevron-rightruleshashtag

Finalidade: Gatilhos de evento e configurações de alerta

Atributo
Detalhes

Campos-chave

rule_id, object_id, client_id, event_type, event_label, event_group, description, parâmetros, alert_email, alert_sms, alert_phone, is_push_enabled, created_at, is_deleted

Conteúdo

Parâmetros da regra (JSONB) definem condições de gatilho; suporta notificações por email, SMS, telefone e push

Relacionamentos

Vincula a objetos via rules2objects, zonas via rules2zones

Observações especiais

event_type define cenário de monitoramento específico (excesso de velocidade, violação de geofence, limiar de sensor); máximo campo habilita agregação de eventos para alertas baseados em limiar

chevron-rightrules2objectshashtag

Finalidade: Associações regra-para-objeto com parâmetros específicos por instância

Atributo
Detalhes

Campos-chave

rule_id, object_id, param_group_number, object_params

Conteúdo

object_params (JSONB) permite personalização de regra por objeto (por exemplo, diferentes limites de velocidade por veículo)

Observações especiais

Relacionamento muitos-para-muitos permite que uma regra monitore múltiplos objetos com parâmetros diferentes

chevron-rightrules2zoneshashtag

Finalidade: Associa regras a gatilhos de geofence

Atributo
Detalhes

Campos-chave

rule_id, zone_id

Observações especiais

Relacionamento muitos-para-muitos habilita monitoramento multi-zona para uma única regra (por exemplo, alerta ao entrar em qualquer uma de várias áreas restritas)

Status e categorização

chevron-rightstatuseshashtag

Finalidade: Definições de status personalizadas para listagens de status

Atributo
Detalhes

Campos-chave

status_id, listing_id, status_label, color, order_sort, is_deleted

Relacionamentos

Grupos de status organizados por listing_id (referências status_listings); usados em status_history

Observações especiais

order_sort define a sequência de exibição; a cor permite diferenciação visual em relatórios

chevron-rightstatus_listingshashtag

Finalidade: Definições de conjunto de status para dispositivos ou funcionários

Atributo
Detalhes

Campos-chave

status_listing_id, user_id, status_listing_label, is_supervisor_controlled, is_employee_controlled, is_deleted

Relacionamentos

Referenciado por devices.status_listing_id e statuses.listing_id

Observações especiais

Flags de controle determinam quem pode alterar status: somente supervisor, autoatendimento do funcionário ou ambos

chevron-rightstatus_historyhashtag

Finalidade: Trilha de auditoria para mudanças de status

Atributo
Detalhes

Campos-chave

status_history_id, device_id, old_status_id, new_status_id, updated_by, changed_datetime, server_datetime, latitude, longitude, endereço

Relacionamentos

Vínculos a devices, statuses (antigo e novo), description_parametrs (para updated_by papel)

Observações especiais

Captura de localização habilita análise geográfica de transições de status; útil para relatórios de local de início/fim do dia de trabalho

chevron-righttagshashtag

Finalidade: Rótulos de categorização definidos pelo usuário

Atributo
Detalhes

Campos-chave

tag_id, user_id, tag_label, color

Relacionamentos

Aplicado a entidades via tag_links; escopo definido pelo usuário

Observações especiais

Sistema de categorização flexível que suporta múltiplas tags por entidade

Grupos e hierarquia

chevron-rightgroupshashtag

Finalidade: Agrupamento organizacional para objetos (rastreadores)

Atributo
Detalhes

Campos-chave

group_id, client_id, group_label, group_color

Relacionamentos

Referenciado por objects.group_id; propriedade do cliente via client_id (referências users)

Observações especiais

Permite organização em estilo pasta de entidades de monitoramento para relatórios e permissões

chevron-rightgroups_objectshashtag

Finalidade: Relacionamento muitos-para-muitos entre grupos e objetos

Atributo
Detalhes

Campos-chave

Chave primária composta: groups_client_id, objects_client_id

Observações especiais

Permite que objetos pertençam a múltiplos grupos simultaneamente; consulte com ambos client_id valores para associação ao grupo

Campos e entidades personalizadas

chevron-rightentitieshashtag

Finalidade: Definições de tipo de entidade para o framework de campos personalizados

Atributo
Detalhes

Campos-chave

entity_id, user_id, entity_label, builtin_type

Relacionamentos

Referenciado por custom_fields para definir quais campos personalizados se aplicam a quais tipos de entidade

Observações especiais

builtin_type vincula a description_parametrs para classificações de entidade definidas pelo sistema

chevron-rightcustom_fieldshashtag

Finalidade: Definições de campo personalizado

Atributo
Detalhes

Campos-chave

custom_field_id, entity_id, custom_field_label, custom_field_type, description, is_required, parâmetros

Conteúdo

parâmetros (JSONB) armazena configuração específica do tipo de campo (regras de validação, opções de dropdown, etc.)

Relacionamentos

Define atributos personalizados disponíveis para entidades; tipo de campo vincula a description_parametrs

Observações especiais

Permite extensão dinâmica do esquema sem alterações no banco de dados; usado extensivamente em places e tasks

Rastreamento histórico

chevron-rightdriver_historyhashtag

Finalidade: Registro de alterações de atribuição funcionário-para-objeto

Atributo
Detalhes

Campos-chave

driver_history_id, object_id, old_employee_id, new_employee_id, hardware_key, changed_datetime, server_datetime, updated_by, latitude, longitude, endereço

Relacionamentos

Rastreia atribuições de motoristas a veículos ao longo do tempo; vincula a employees e objects

Observações especiais

Essencial para relatórios específicos por motorista quando motoristas trocam de veículo; captura de localização possibilita análise da localização da alteração de atribuição

chevron-rightvehicle_trackers_historyhashtag

Finalidade: Registro de alterações de veículo-para-rastreador

Atributo
Detalhes

Campos-chave

vehicle_tracker_history_id, vehicle_id, object_id, changed_datetime

Relacionamentos

Rastreia qual dispositivo GPS foi instalado em qual veículo ao longo do tempo

Observações especiais

Crítico para análise de dados históricos quando rastreadores são movidos entre veículos; possibilita atribuição precisa de quilometragem e uso

Dados de referência e pesquisa

chevron-rightdescription_parametrshashtag

Finalidade: Dados de referência do sistema e valores de enumeração

Atributo
Detalhes

Campos-chave

key, type, description

Conteúdo

Fornece rótulos legíveis por humanos para valores codificados em todo o banco de dados (status de tarefa, tipos de combustível, tipos de contador, etc.)

Relacionamentos

Referenciado via chaves estrangeiras de múltiplas tabelas para categorização padronizada

Observações especiais

Essencial para traduzir códigos inteiros em valores legíveis em relatórios; type grupos de campo relacionados a enumerações

chevron-rightcountershashtag

Finalidade: Configuração de rastreamento de odômetro e horas de motor

Atributo
Detalhes

Campos-chave

counter_id, device_id, counter_type, sensor_id, multiplier

Relacionamentos

Vincula dispositivos a leituras de sensores que representam contadores de distância ou tempo

Observações especiais

multiplier converte pulsos do sensor em unidades reais (km, milhas, horas); counter_type de description_parametrs define o tipo de medição

chevron-rightdevice_output_namehashtag

Finalidade: Rótulos personalizados para canais de saída do dispositivo

Atributo
Detalhes

Campos-chave

device_id, number, rótulo

Conteúdo

Mapeia números de canal de saída para nomes definidos pelo usuário (por exemplo, "Door Lock", "Engine Block")

Observações especiais

Habilita relatórios legíveis ao analisar comandos e estados de saída do dispositivo

raw_telematics_data estrutura

O raw_telematics_data esquema contém três tipos principais de tabelas que trabalham juntos para fornecer dados abrangentes do dispositivo.

Bronze layer raw telematics data ERD
ERD de dados telemáticos brutos da camada Bronze
circle-info

O diagrama interativo do esquema raw_telematics_data está disponível em dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Encontre abaixo os detalhes do esquema de dados telemáticos brutos.

chevron-rightesquema raw_telematics_datahashtag

Tabelas-chave por categoria

Cada tabela serve a um propósito específico na captura de diferentes aspectos das informações do dispositivo:

chevron-righttracking_data_corehashtag

Finalidade: Dados principais de localização e movimento

Atributo
Detalhes

Campos-chave

device_id, device_time, platform_time, latitude, longitude, speed, altitude, satellites, hdop, event_id

Indexação

Otimizado com índice em (device_id, device_time)

Observações especiais

Dados de localização (latitude e longitude) usam formato inteiro com precisão de 10⁷ para desempenho ideal no TimescaleDB A velocidade também é armazenada como inteiro, portanto é necessário dividi-la por 100

chevron-rightinputshashtag

Finalidade: Leituras de sensores dos dispositivos

Atributo
Detalhes

Campos-chave

input_id, device_id, device_time, sensor_name, value

Conteúdo

Leituras analógicas (nível de combustível, temperatura, tensão), valores calculados (RPM do motor)

Relacionamentos

chevron-rightstateshashtag

Finalidade: Indicadores de status do dispositivo e modos operacionais

Atributo
Detalhes

Campos-chave

state_id, device_id, device_time, state_name, value

Conteúdo

Indicadores de modo de operação (trabalhando, inativo, desligado), status de componentes (ignição, portas)

Formato do valor

Valores booleanos (1/0) ou códigos de status específicos

Os dados neste esquema são ingeridos diretamente dos dispositivos, com latência mínima (tipicamente em segundos). O esquema é otimizado para dados de séries temporais usando TimescaleDB para armazenamento e recuperação eficientes.

Informações adicionais

Validação de dados

O banco de dados aplica integridade dos dados através de múltiplos mecanismos:

  • Restrições CHECK validam que os valores estejam dentro de intervalos aceitáveis

  • Chaves estrangeiras garantem que os relacionamentos entre tabelas permaneçam consistentes

  • Restrições NOT NULL garantem que campos obrigatórios sempre tenham valores

  • Valores DEFAULT fornecem padrão quando os dados não são explicitamente fornecidos

Otimização de consultas

As tabelas são organizadas com estratégias específicas de indexação:

  • Todas as tabelas incluem índices baseados em tempo em record_added_at

  • Colunas de chave estrangeira possuem índices dedicados para desempenho em junções

  • Combinações de colunas usadas com frequência têm índices compostos

  • O TimescaleDB fornece índices especializados para consultas de séries temporais

repo estrutura de dados

circle-exclamation

O repo o esquema fornece uma estrutura abrangente para gerenciar estruturas organizacionais, ativos, dispositivos e seus relacionamentos em ambientes multitenant. Construído sobre PostgreSQL 14+ com a extensão ltree, o esquema suporta organizações hierárquicas, definições de campos personalizados para qualquer tipo de entidade, controle de acesso baseado em função com restrições a nível de objeto e trilhas de auditoria completas com rastreamento de alterações por campo. Todas as entidades podem ser estendidas sem modificações no esquema, localizadas para implantações internacionais e vinculadas por relacionamentos polimórficos flexíveis.

O esquema aborda cenários complexos de gerenciamento de dados, incluindo hierarquias de ativos de frota através de níveis organizacionais, plataformas SaaS multitenant que exigem isolamento de dados, operações orientadas por conformidade com requisitos detalhados de auditoria e sistemas que necessitam de modelos de dados dinâmicos adaptáveis por meio de campos personalizados em vez de migrações de banco de dados.

circle-info

O diagrama interativo dorepo esquema de dados está disponível em dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Encontre o repo detalhes do esquema abaixo.

chevron-rightrepo esquema de dadoshashtag

Frequência de atualização

Dados no repo esquema são sincronizados em tempo real com os sistemas de origem. As atualizações ocorrem imediatamente conforme as alterações acontecem, com trilhas de auditoria registrando todas as modificações para conformidade e análise histórica.

ci_base

O repo esquema usa um padrão Single Table Inheritance para todos os dados de referência através da ci_base tabela:

O repo esquema usa um Single Table Inheritance padrão para todos os dados de referência através da ci_base tabela. Esse desenho consolida dicionários do sistema, classificações e itens de referência definidos pelo usuário em uma estrutura unificada, fornecendo consistência e flexibilidade em todo o esquema.

Arquitetura:

O ci_base tabela serve como a base para todos os dados de referência, usando um discriminator campo para identificar o tipo de referência específico. Cada tipo de referência tem uma tabela correspondente (como ci_device_type, ci_asset_type) que compartilha o mesmo id como ci_base, criando uma relação de herança com segurança de tipo.

Como as entidades de negócio se conectam ao ci_base:

Todas as entidades de negócio no repo esquema referenciam ci_base subtipos para definir sua classificação e comportamento:

  • organization → referencia ci_organization_type (que herda de ci_entity_typeci_base)

  • user → referencia ci_user_type (que herda de ci_entity_typeci_base)

  • device → referencia ci_device_type e ci_device_status (ambos herdam de ci_base)

  • asset → referencia ci_asset_type (que herda de ci_entity_typeci_base)

  • inventory → referencia ci_inventory_type (que herda de ci_entity_typeci_base)

  • asset_group → referencia ci_asset_group_type (que herda de ci_entity_typeci_base)

Categorias de tipos de referência:

Categoria
Tabelas
Finalidade

Configuração do sistema

ci_module, ci_country, ci_role

Definir módulos do sistema, referências geográficas e papéis de usuário

Definições de tipo de entidade

ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type

Classificar todas as entidades de negócio por tipo

Status e classificação

ci_device_status, ci_asset_type_category

Rastrear estados de entidades e agrupar tipos em categorias

Controle de acesso

ci_permission_scope

Definir quais permissões podem ser concedidas (conectado a ci_module e ci_entity_type)

Relacionamentos

ci_device_relation_type

Definir tipos de relacionamentos entre dispositivos (master-slave, backup, etc.)

Categorização

ci_tag, ci_catalog_category

Habilitar marcação flexível e organização de catálogos

chevron-rightPadrões de consulta de exemplohashtag

Tabelas-chave por categoria

As tabelas no repo esquema são organizados em categorias funcionais. As descrições abaixo resumem as tabelas mais importantes por sua finalidade de negócio.

chevron-rightorganizationhashtag

Finalidade: Gerenciamento de organização hierárquica

Atributo
Detalhes

Campos-chave

id, parent_id, path, organization_type_id, title_en, is_active, deleted_at

Indexação

Índice GiST em path para consultas hierárquicas, índices em parent_id e organization_type_id

Observações especiais

Usa ltree para hierarquias em múltiplos níveis, herda de customizable_entity para suporte a campos personalizados

chevron-rightuserhashtag

Finalidade: Contas de usuário e autenticação

Atributo
Detalhes

Campos-chave

id, organization_id, user_type_id, identity_provider, identity_provider_id, full_name, is_active

Indexação

Índice único em (organization_id, identity_provider, identity_provider_id)

Observações especiais

Integração com provedores de identidade externos (Keycloak, Auth0, Okta), herda de customizable_entity

chevron-rightdevicehashtag

Finalidade: Dispositivos físicos de rastreamento

Atributo
Detalhes

Campos-chave

id, organization_id, device_type_id, status_id, hw_id, rótulo

Indexação

Índices em organization_id, device_type_id, status_id, hw_id

Observações especiais

Identificador de hardware para rastreamento de dispositivo, herda de customizable_entity para campos personalizados

chevron-rightassethashtag

Finalidade: Ativos físicos ou virtuais

Atributo
Detalhes

Campos-chave

id, organization_id, asset_type_id, rótulo, description

Indexação

Índices em organization_id e asset_type_id

Observações especiais

Herdado de customizable_entity, vinculado a dispositivos via device_asset_link

chevron-rightinventoryhashtag

Finalidade: Registros de inventário e armazém

Atributo
Detalhes

Campos-chave

id, organization_id, inventory_type_id, code

Indexação

Índice único em (organization_id, code)

Observações especiais

Códigos únicos dentro da organização, vinculados a dispositivos via device_inventory_link

chevron-rightasset_grouphashtag

Finalidade: Agrupamento de ativos com rastreamento histórico

Atributo
Detalhes

Campos-chave

id, organization_id, group_type_id, title_en, description

Relacionamentos

FROM repo.asset_group AS ag JOIN repo.asset_group_item AS agi ON agi.group_id = ag.id JOIN repo.asset AS a ON a.id = agi.asset_id WHERE agi.detached_at IS NULL

Observações especiais

Membro com base em tempo via asset_group_item, consultar membros atuais com WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Finalidade: Definições de campos personalizados e metadados

Atributo
Detalhes

Campos-chave

id, organization_id, owner_entity_type_id, code, field_type, is_multi, is_required

Conteúdo

Tipos de campo incluem texto, número, booleano, data, datetime, entity_ref, catalog_item_ref

Observações especiais

Permite campos personalizados flexíveis para qualquer tipo de entidade, valores armazenados em custom_field_value_* tabelas

chevron-rightacl_role_permissionhashtag

Finalidade: Gerenciamento de permissões baseado em função

Atributo
Detalhes

Campos-chave

id, role_id, permission_scope_id, target_entity_id, actions

Conteúdo

Máscara de bits de ação (READ=1, UPDATE=2, DELETE=4, CREATE=8), permissões específicas por alvo ou amplas por tipo de entidade

Relacionamentos

FROM repo.user_role AS ur JOIN repo.acl_role_permission AS rp ON rp.role_id = ur.role_id WHERE ur.user_id = $user_id

Observações especiais

Funciona com user_role e acl_user_scope para determinar as permissões finais do usuário

chevron-rightaudit_eventhashtag

Finalidade: Registro unificado de auditoria para todas as alterações do sistema

Atributo
Detalhes

Campos-chave

id, event_category, user_id, aggregate_type, aggregate_id, event_type, event_data, occurred_at

Indexação

Índices em (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)

Observações especiais

Particionado por occurred_at (mensal), duas categorias: auth (autenticação) e domain (eventos de negócio), armazena deltas de alteração a nível de campo em event_data JSONB

Relacionamentos de dados

O repo esquema implementa padrões sofisticados de relacionamento para modelagem de dados flexível:

Estruturas hierárquicas

  • Organizações usam caminhos ltree para consultas eficientes em árvores

  • Itens de referência (ci_base) suportam hierarquias opcionais

  • Manutenção automática de caminhos via triggers do banco de dados

Padrões de herança

  • Herança de tabela: customizable_entity → entidades de negócio (organization, user, device, asset, inventory, asset_group)

  • Herança de ID: ci_base → tabelas de tipo de referência

  • Discriminação de tipo via entity_type_id e discriminator campos

Relacionamentos polimórficos

Certas tabelas usam referências polimórficas sem restrições de chave estrangeira para máxima flexibilidade:

  • acl_role_permission.target_entity_id → qualquer customizable_entity

  • acl_user_scope.target_entity_id → qualquer customizable_entity

  • entity_tag.entity_id → qualquer customizable_entity

Esses relacionamentos são validados no nível da aplicação.

Informações adicionais

Validação de dados

O repo esquema aplica integridade de dados por meio de múltiplos mecanismos:

Restrições de banco de dados

  • Restrições UNIQUE com suporte a exclusão suave (índices parciais WHERE deleted_at IS NULL)

  • Restrições CHECK (por exemplo, device_relation garante master_idslave_id)

  • Restrições NOT NULL em campos obrigatórios

  • Valores DEFAULT para timestamps e flags booleanas

Validação em nível de aplicação

  • Validação de tipo de entidade para referências polimórficas

  • Validação de catálogo para referências de campos personalizados

  • Validação de tipo de campo personalizado

  • Gerenciamento de arrays para campos multi-valor

Otimização de consultas

As tabelas são organizadas com estratégias específicas de indexação:

Índices padrão:

  • Todas as chaves estrangeiras têm índices dedicados

  • Índices baseados em tempo em created_at, updated_at, deleted_at

  • Índices compostos para colunas frequentemente unidas

Índices especializados:

  • Índices GiST em caminhos ltree para consultas hierárquicas

  • Índices únicos parciais suportando exclusão suave

  • Índices de valor de campo personalizado para filtragem e ordenação

  • Índices de eventos de auditoria por tempo + entidade para buscas eficientes

Considerações de desempenho:

  • Recomendado pooling de conexão (PgBouncer)

  • Manutenção VACUUM regular para tabelas grandes

  • Possível particionamento futuro para device tabela por organization_id

  • Views materializadas para cálculos complexos de controle de acesso

Atualizado

Isto foi útil?