Capa Bronze

La capa Bronze contiene dos esquemas de datos distintos, cada uno sirviendo a diferentes aspectos de la plataforma de telemática e inteligencia de negocios:

  • raw_business_data - que contiene tablas, atributos y valores relacionados con la información empresarial, como vehículos, empleados, geocercas añadidas por los usuarios, etc.

  • raw_telematics_data - que contiene tablas, atributos y valores relacionados con los datos telemáticos transmitidos desde los dispositivos bajo monitoreo, como ubicaciones, entradas, salidas y eventos.

Cada esquema está optimizado para su dominio de datos específico y patrones de acceso, proporcionando una cobertura integral de las necesidades de gestión operativa, telemática y de activos.

raw_business_data estructura

Este esquema contiene más de 40 tablas cuidadosamente seleccionadas para cubrir diversos aspectos comerciales y casos de uso. Estas tablas representan sus entidades empresariales principales, la estructura organizativa y los datos operativos.

circle-info

El diagrama interactivo del esquema raw_business_data está disponible en dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Consulte los detalles del esquema de datos comerciales en bruto a continuación.

chevron-rightesquema raw_business_datahashtag

Frecuencia de actualización

Los datos en este esquema se sincronizan con la BD principal. Las actualizaciones ocurren de forma incremental a medida que se producen cambios en la base de datos MySQL de origen, normalmente en menos de 5 minutos desde el cambio en el origen.

description_parameters

El sistema incluye datos de referencia para estandarizar valores en toda la base de datos:

Tipo de referencia
Descripción
Valores de ejemplo

Definiciones de tipo

Tipos de entidad estándar

vehicle_type: car, truck, bus

Códigos de estado

Valores de estado de tareas y del sistema

tasks_status: unassigned, assigned, done

Definiciones de unidad

Unidades de medida para sensores

units_type: liter, gallon, celsius

Clasificaciones de entidad

Categorías de entidad empresarial

entities_type: place, task, customer

Tablas clave por categoría

Las tablas en el raw_business_data esquema están organizadas en categorías funcionales para facilitar la navegación. La tabla siguiente resume las tablas clave según su propósito empresarial:

Entidades comerciales principales

chevron-rightusershashtag

Propósito: Información de cuenta y perfil de usuario

Atributo
Detalles

Campos clave

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

Relaciones

Usuario padre vía master_id, vinculado a employees, departments, places, tasks a través de user_id

Notas especiales

Entidad central que conecta datos organizacionales; master_id habilita jerarquías de usuarios para estructuras de cuenta multinivel

chevron-rightemployeeshashtag

Propósito: Registros de empleados y conductores con detalles de licencia y asignación

Atributo
Detalles

Campos clave

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

Relaciones

Enlaces a users, departments, objects (rastreador asignado), rastreado en driver_history y checkins

Notas especiales

La clave de hardware permite la identificación del conductor mediante iButton o RFID; admite geocercas con latitude, longitude, radius campos

chevron-rightdepartmentshashtag

Propósito: Unidades organizacionales con ubicación geográfica

Atributo
Detalles

Campos clave

department_id, user_id, department_label, latitude, longitude, radius, address

Relaciones

Vincula empleados a la estructura organizativa mediante department_id

Notas especiales

Los campos de ubicación admiten análisis basados en geocercas para informes a nivel de departamento

Seguimiento y monitorización

chevron-rightdeviceshashtag

Propósito: Información del dispositivo de seguimiento físico y estado de la red

Atributo
Detalles

Campos clave

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

Relaciones

Entidad central que enlaza con objects, models, sensor_description, counters; owner_id references users.user_id

Notas especiales

Todos los datos telemáticos en raw_telematics_data el esquema hacen referencia a esta tabla vía device_id

chevron-rightobjectshashtag

Propósito: Entidades monitorizadas (vehículos, activos, personal)

Atributo
Detalles

Campos clave

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

Relaciones

Centro central que conecta dispositivos con usuarios (client_id), detalles del vehículo, historial de seguimiento, tareas y reglas

Notas especiales

Representa la "unidad rastreable" en el sistema; un objeto por dispositivo en uso activo

chevron-rightmodelshashtag

Propósito: Especificaciones de hardware del dispositivo y capacidades

Atributo
Detalles

Campos clave

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

Contenido

Las banderas booleanas de capacidad indican qué campos de datos están disponibles para este tipo de dispositivo

Notas especiales

Use las banderas de capacidad para determinar sensores e entradas válidas al consultar datos telemáticos

chevron-rightsensor_descriptionhashtag

Propósito: Datos de configuración y calibración de sensores

Atributo
Detalles

Campos clave

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

Relaciones

Vincula las entradas del dispositivo (desde raw_telematics_data.inputs) con la lógica empresarial mediante device_id y input_label matching

Notas especiales

calibration_data (JSONB) almacena tablas de calibración específicas del sensor para sensores de nivel de combustible; multiplier y divider convierte valores sin procesar a unidades

Gestión de activos

chevron-rightvehicleshashtag

Propósito: Especificaciones del vehículo, documentación y parámetros operativos

Atributo
Detalles

Campos clave

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

Relaciones

Enlaces a objects (rastreador actual), garages (ubicación de servicio), vehicle_service_tasks; rastreado en vehicle_trackers_history

Notas especiales

Los campos de dimensión física (payload_length, payload_width, payload_height, gross_weight) permiten análisis de planificación de carga; las fechas de seguro permiten el seguimiento de cumplimiento

chevron-rightgarageshashtag

Propósito: Ubicaciones de instalaciones de servicio y mantenimiento

Atributo
Detalles

Campos clave

garage_id, user_id, latitude, longitude, radius, address, organization_label, mechanic_name, dispatcher_name

Relaciones

Referenciado por vehicles.garage_id para la asignación de ubicación de servicio

Notas especiales

Los campos de ubicación permiten la detección de visitas de servicio basadas en geocercas y análisis de proximidad

chevron-rightvehicle_service_taskshashtag

Propósito: Programaciones de mantenimiento e historial de servicio

Atributo
Detalles

Campos clave

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

Contenido

Admite tres tipos de activadores: basados en fecha, en kilometraje y en horas de motor; configuraciones de notificación para correo electrónico, SMS y push

Notas especiales

is_repeat y los campos de intervalo permiten programaciones de mantenimiento recurrentes; is_unplanned distingue mantenimiento programado frente a reactivo

Ubicación y enrutamiento

chevron-rightzoneshashtag

Propósito: Áreas geocercadas para monitorización y automatización

Atributo
Detalles

Campos clave

zone_id, client_id, zone_label, zone_type, latitude, longitude, circle_center_latitude, circle_center_longitude, radius, address, color

Contenido

Los tipos de zona incluyen círculo, polígono (definido vía geofence_points), y clasificaciones de áreas especiales

Relaciones

Referenciado por rules2zones, users2zones; vértices del polígono almacenados en geofence_points

Notas especiales

Se pueden usar funciones PostGIS para verificar punto-en-polígono para análisis de geocercas complejas

chevron-rightplaceshashtag

Propósito: Puntos de interés con atributos personalizados

Atributo
Detalles

Campos clave

place_id, user_id, place_label, latitude, longitude, radius, address, description, external_id, custom_fields

Relaciones

Extendido con valores de campos personalizados a través de places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Notas especiales

custom_fields JSONB proporciona acceso rápido; tablas relacionadas permiten filtrar y ordenar en atributos personalizados

chevron-rightgeofence_pointshashtag

Propósito: Coordenadas de vértice de polígono para formas de geocercas complejas

Atributo
Detalles

Campos clave

zone_id, number, latitude, longitude

Relaciones

Múltiples registros por zone_id definen los límites del polígono; number el campo determina el orden de los vértices

Notas especiales

Consulte con ORDER BY number para reconstruir la trayectoria del polígono; úselo con PostGIS ST_MakePolygon para operaciones geométricas

Gestión de tareas y flujos de trabajo

chevron-righttaskshashtag

Propósito: Asignaciones de órdenes de trabajo y seguimiento de ejecución

Atributo
Detalles

Campos clave

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

Contenido

Admite tareas jerárquicas vía parent_task_id; ventanas de tiempo definidas por time_from/time_to; validación de geocercas con ubicación y radio

Relaciones

Enlaces a forms (recolección de datos), task_history (cambios de estado), objects (rastreador asignado)

Notas especiales

stay_duration y arrival_duration_minutes habilitan el control de cumplimiento para tareas de entrega y servicio

chevron-rightformshashtag

Propósito: Formularios de recolección de datos y envíos

Atributo
Detalles

Campos clave

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

Contenido

campos define la estructura del formulario (JSON); values contiene los datos enviados (JSON)

Relaciones

Enlaces a tasks (orden de trabajo asociada), objects (remitente), referenciado en checkins

Notas especiales

Indicador de validación de ubicación is_submission_in_zone habilita reglas de envío de formularios basadas en geocercas

chevron-rightcheckinshashtag

Propósito: Registros de asistencia y actividad basados en ubicación

Atributo
Detalles

Campos clave

checkin_id, employee_id, object_id, form_id, user_id, planned_datetime, actual_datetime, latitude, longitude, radius, address, comment

Relaciones

Conecta empleados con formularios y ubicaciones; rastrea desviaciones del horario planificado

Notas especiales

Variación de tiempo entre planned_datetime y actual_datetime habilita informes de puntualidad; el radio define la tolerancia de ubicación aceptable

chevron-righttask_historyhashtag

Propósito: Registro de auditoría para eventos del ciclo de vida de la tarea

Atributo
Detalles

Campos clave

task_history_id, task_id, user_id, activity, event_datetime, payload

Contenido

Tipos de actividad definidos en description_parametrs; payload almacena detalles específicos del evento (texto)

Notas especiales

Esencial para el análisis de finalización de tareas, informes de transición de estado y seguimiento de actividad de usuarios

Reglas y automatización

chevron-rightruleshashtag

Propósito: Disparadores de eventos y configuraciones de alerta

Atributo
Detalles

Campos clave

rule_id, object_id, client_id, event_type, event_label, event_group, description, parameters, alert_email, alert_sms, alert_phone, is_push_enabled, created_at, is_deleted

Contenido

Los parámetros de la regla (JSONB) definen condiciones de activación; admiten correo electrónico, SMS, teléfono y notificaciones push

Relaciones

Enlaza con objetos vía rules2objects, zonas vía rules2zones

Notas especiales

event_type define un escenario de monitorización específico (exceso de velocidad, violación de geocerca, umbral de sensor); maximum el campo permite la agregación de eventos para alertas basadas en umbrales

chevron-rightrules2objectshashtag

Propósito: Asociaciones regla-objeto con parámetros específicos de instancia

Atributo
Detalles

Campos clave

rule_id, object_id, param_group_number, object_params

Contenido

object_params (JSONB) permite la personalización de reglas por objeto (p. ej., límites de velocidad diferentes por vehículo)

Notas especiales

La relación de muchos a muchos permite que una regla supervise varios objetos con diferentes parámetros

chevron-rightrules2zoneshashtag

Propósito: Asocia reglas con disparadores de geocerca

Atributo
Detalles

Campos clave

rule_id, zone_id

Notas especiales

La relación de muchos a muchos permite la monitorización multizona para una sola regla (p. ej., alerta al entrar en cualquiera de varias áreas restringidas)

Estado y categorización

chevron-rightstatuseshashtag

Propósito: Definiciones de estado personalizadas para listados de estado

Atributo
Detalles

Campos clave

status_id, listing_id, status_label, color, order_sort, is_deleted

Relaciones

Grupos de estados organizados por listing_id (referencias status_listings); usados en status_history

Notas especiales

order_sort define la secuencia de visualización; el color permite la diferenciación visual en informes

chevron-rightstatus_listingshashtag

Propósito: Definiciones de conjuntos de estado para dispositivos o empleados

Atributo
Detalles

Campos clave

status_listing_id, user_id, status_listing_label, is_supervisor_controlled, is_employee_controlled, is_deleted

Relaciones

Referenciado por devices.status_listing_id y statuses.listing_id

Notas especiales

Las banderas de control determinan quién puede cambiar estados: solo supervisor, autoservicio del empleado o ambos

chevron-rightstatus_historyhashtag

Propósito: Registro de auditoría para cambios de estado

Atributo
Detalles

Campos clave

status_history_id, device_id, old_status_id, new_status_id, updated_by, changed_datetime, server_datetime, latitude, longitude, address

Relaciones

Enlaces a devices, statuses (antiguo y nuevo), description_parametrs (para updated_by role)

Notas especiales

La captura de ubicación permite el análisis geográfico de las transiciones de estado; útil para informes de ubicación de inicio/fin de jornada

chevron-righttagshashtag

Propósito: Etiquetas de categorización definidas por el usuario

Atributo
Detalles

Campos clave

tag_id, user_id, tag_label, color

Relaciones

Aplicado a entidades vía tag_links; alcance definido por el usuario

Notas especiales

Sistema de categorización flexible que admite múltiples etiquetas por entidad

Grupos y jerarquía

chevron-rightgroupshashtag

Propósito: Agrupación organizativa para objetos (rastreadres)

Atributo
Detalles

Campos clave

group_id, client_id, group_label, group_color

Relaciones

Referenciado por objects.group_id; propiedad del cliente vía client_id (referencias users)

Notas especiales

Permite la organización tipo carpetas de entidades de monitorización para informes y permisos

chevron-rightgroups_objectshashtag

Propósito: Relación de muchos a muchos entre grupos y objetos

Atributo
Detalles

Campos clave

Clave primaria compuesta: groups_client_id, objects_client_id

Notas especiales

Permite que los objetos pertenezcan simultáneamente a múltiples grupos; consulte con ambos client_id valores para la pertenencia al grupo

Campos y entidades personalizadas

chevron-rightentitieshashtag

Propósito: Definiciones de tipos de entidad para el marco de campos personalizados

Atributo
Detalles

Campos clave

entity_id, user_id, entity_label, builtin_type

Relaciones

Referenciado por custom_fields para definir qué campos personalizados se aplican a qué tipos de entidad

Notas especiales

builtin_type vínculos a description_parametrs para clasificaciones de entidad definidas por el sistema

chevron-rightcustom_fieldshashtag

Propósito: Definiciones de campos personalizados

Atributo
Detalles

Campos clave

custom_field_id, entity_id, custom_field_label, custom_field_type, description, is_required, parameters

Contenido

parameters (JSONB) almacena la configuración específica del tipo de campo (reglas de validación, opciones de lista desplegable, etc.)

Relaciones

Define los atributos personalizados disponibles para las entidades; el tipo de campo está vinculado a description_parametrs

Notas especiales

Permite la extensión dinámica del esquema sin cambios en la base de datos; se utiliza ampliamente en places y tasks

Seguimiento histórico

chevron-rightdriver_historyhashtag

Propósito: Registro de cambios de asignación empleado-objeto

Atributo
Detalles

Campos clave

driver_history_id, object_id, old_employee_id, new_employee_id, hardware_key, changed_datetime, server_datetime, updated_by, latitude, longitude, address

Relaciones

Registra las asignaciones de conductores a vehículos a lo largo del tiempo; vincula con employees y objects

Notas especiales

Esencial para informes específicos por conductor cuando los conductores cambian de vehículo; la captura de ubicación permite el análisis de la ubicación del cambio de asignación

chevron-rightvehicle_trackers_historyhashtag

Propósito: Registro de cambios de asignación vehículo-rastreador

Atributo
Detalles

Campos clave

vehicle_tracker_history_id, vehicle_id, object_id, changed_datetime

Relaciones

Registra qué dispositivo GPS se instaló en qué vehículo a lo largo del tiempo

Notas especiales

Crítico para el análisis de datos históricos cuando los rastreadores se mueven entre vehículos; permite una atribución precisa de kilometraje y uso

Datos de referencia y consulta

chevron-rightdescription_parametrshashtag

Propósito: Datos de referencia del sistema y valores de enumeración

Atributo
Detalles

Campos clave

key, type, description

Contenido

Proporciona etiquetas legibles por humanos para valores codificados en toda la base de datos (estado de tarea, tipos de combustible, tipos de contadores, etc.)

Relaciones

Referenciado vía claves externas desde múltiples tablas para una categorización estandarizada

Notas especiales

Esencial para traducir códigos enteros a valores legibles en informes; type agrupa campos relacionados enumeraciones

chevron-rightcountershashtag

Propósito: Configuración de seguimiento de odómetro y horas de motor

Atributo
Detalles

Campos clave

counter_id, device_id, counter_type, sensor_id, multiplier

Relaciones

Vincula dispositivos a lecturas de sensores que representan contadores de distancia o tiempo

Notas especiales

multiplier convierte pulsos del sensor a unidades reales (km, millas, horas); counter_type from description_parametrs define el tipo de medición

chevron-rightdevice_output_namehashtag

Propósito: Etiquetas personalizadas para los canales de salida del dispositivo

Atributo
Detalles

Campos clave

device_id, number, etiqueta

Contenido

Asigna los números de canal de salida a nombres definidos por el usuario (por ejemplo, "Cierre de puerta", "Bloqueo del motor")

Notas especiales

Permite informes legibles al analizar comandos y estados de salida del dispositivo

raw_telematics_data estructura

El raw_telematics_data esquema contiene tres tipos de tabla principales que trabajan juntos para proporcionar datos completos del dispositivo.

Bronze layer raw telematics data ERD
ERD de datos telemáticos sin procesar - capa Bronze
circle-info

El diagrama interactivo del esquema raw_telematics_data está disponible en dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Encuentre los detalles del esquema de datos telemáticos sin procesar a continuación.

chevron-rightesquema raw_telematics_datahashtag

Tablas clave por categoría

Cada tabla cumple un propósito específico al capturar diferentes aspectos de la información del dispositivo:

chevron-righttracking_data_corehashtag

Propósito: Datos principales de ubicación y movimiento

Atributo
Detalles

Campos clave

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

Indexación

Optimizado con índice en (device_id, device_time)

Notas especiales

Los datos de ubicación (latitud y longitud) usan formato entero con precisión de 10⁷ para un rendimiento óptimo en TimescaleDB La velocidad también se almacena en entero, por lo que debe dividirla entre 100

chevron-rightinputshashtag

Propósito: Lecturas de sensores desde dispositivos

Atributo
Detalles

Campos clave

input_id, device_id, device_time, sensor_name, value

Contenido

Lecturas analógicas (nivel de combustible, temperatura, voltaje), valores calculados (RPM del motor)

Relaciones

chevron-rightstateshashtag

Propósito: Indicadores de estado del dispositivo y modos operativos

Atributo
Detalles

Campos clave

state_id, device_id, device_time, state_name, value

Contenido

Indicadores de modo de funcionamiento (trabajando, inactivo, apagado), estados de componentes (encendido, puertas)

Formato de valor

Valores booleanos (1/0) o códigos de estado específicos

Los datos en este esquema se ingieren directamente desde los dispositivos, con latencia mínima (típicamente segundos). El esquema está optimizado para datos de series temporales usando TimescaleDB para almacenamiento y recuperación eficientes.

Información adicional

Validación de datos

La base de datos aplica la integridad de los datos mediante múltiples mecanismos:

  • Restricciones CHECK valide que los valores se encuentren dentro de rangos aceptables

  • Claves externas garanticen que las relaciones entre tablas permanezcan consistentes

  • Restricciones NOT NULL garanticen que los campos obligatorios siempre tengan valores

  • Valores DEFAULT proporcionen un valor alternativo cuando los datos no se proporcionen explícitamente

Optimización de consultas

Las tablas están organizadas con estrategias específicas de indexación:

  • Todas las tablas incluyen índices basados en tiempo en record_added_at

  • Las columnas de claves externas tienen índices dedicados para el rendimiento de joins

  • Combinaciones de columnas usadas frecuentemente tienen índices compuestos

  • TimescaleDB proporciona índices especializados para consultas de series temporales

repo estructura de datos

circle-exclamation

El repo El esquema proporciona un marco integral para gestionar estructuras organizacionales, activos, dispositivos y sus relaciones en entornos multiarrendatarios. Construido sobre PostgreSQL 14+ con la extensión ltree, el esquema admite organizaciones jerárquicas, definiciones de campos personalizados para cualquier tipo de entidad, control de acceso basado en roles con restricciones a nivel de objeto y registros de auditoría completos con seguimiento de cambios a nivel de campo. Todas las entidades pueden ampliarse sin modificaciones del esquema, localizarse para despliegues internacionales y vincularse mediante relaciones polimórficas flexibles.

El esquema aborda escenarios complejos de gestión de datos, incluyendo jerarquías de activos de flota a través de niveles organizacionales, plataformas SaaS multiarrendatario que requieren aislamiento de datos, operaciones impulsadas por cumplimiento con requisitos detallados de auditoría y sistemas que necesitan modelos de datos dinámicos adaptables mediante campos personalizados en lugar de migraciones de base de datos.

circle-info

El diagrama interactivo derepo el esquema de datos está disponible en dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Encuentre los repo detalles del esquema a continuación.

chevron-rightrepo esquema de datoshashtag

Frecuencia de actualización

Datos en el repo esquema se sincronizan en tiempo real con los sistemas de origen. Las actualizaciones ocurren inmediatamente conforme se producen los cambios, con registros de auditoría que capturan todas las modificaciones para cumplimiento y análisis histórico.

ci_base

El repo el esquema utiliza un patrón Single Table Inheritance para todos los datos de referencia a través de la ci_base tabla:

El repo el esquema utiliza un Single Table Inheritance patrón para todos los datos de referencia a través de la ci_base tabla. Este diseño consolida diccionarios del sistema, clasificaciones y elementos de referencia definidos por el usuario en una única estructura unificada, proporcionando coherencia y flexibilidad en todo el esquema.

Arquitectura:

El ci_base la tabla sirve como la base para todos los datos de referencia, usando un discriminador campo para identificar el tipo de referencia específico. Cada tipo de referencia tiene una tabla correspondiente (como ci_device_type, ci_asset_type) que comparte el mismo id que ci_base, creando una relación de herencia segura por tipo.

Cómo las entidades de negocio se conectan a ci_base:

Todas las entidades de negocio en el repo esquema hacen referencia a ci_base subtipos para definir su clasificación y comportamiento:

  • organización → referencia ci_organization_type (que hereda de ci_entity_typeci_base)

  • usuario → referencia ci_user_type (que hereda de ci_entity_typeci_base)

  • dispositivo → referencia ci_device_type y ci_device_status (ambos heredan de ci_base)

  • activo → referencia ci_asset_type (que hereda de ci_entity_typeci_base)

  • inventario → referencia ci_inventory_type (que hereda de ci_entity_typeci_base)

  • grupo_de_activos → referencia ci_asset_group_type (que hereda de ci_entity_typeci_base)

Categorías de tipos de referencia:

Categoría
Tablas
Propósito

Configuración del sistema

ci_module, ci_country, ci_role

Definir módulos del sistema, referencias geográficas y roles de usuario

Definiciones de tipos de entidad

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

Clasificar todas las entidades de negocio por tipo

Estado y clasificación

ci_device_status, ci_asset_type_category

Rastrear estados de entidad y agrupar tipos en categorías

Control de acceso

ci_permission_scope

Definir qué permisos se pueden otorgar (conectado a ci_module y ci_entity_type)

Relaciones

ci_device_relation_type

Definir tipos de relaciones entre dispositivos (maestro-esclavo, respaldo, etc.)

Categorización

ci_tag, ci_catalog_category

Permitir etiquetado flexible y organización de catálogos

chevron-rightPatrones de consulta de ejemplohashtag

Tablas clave por categoría

Las tablas en el repo los esquemas están organizados en categorías funcionales. Las descripciones a continuación resumen las tablas más importantes según su propósito de negocio.

chevron-rightorganizaciónhashtag

Propósito: Gestión organizativa jerárquica

Atributo
Detalles

Campos clave

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

Indexación

Índice GiST en path para consultas jerárquicas, índices en parent_id y organization_type_id

Notas especiales

Usa ltree para jerarquías multinivel, hereda de customizable_entity para soporte de campos personalizados

chevron-rightusuariohashtag

Propósito: Cuentas de usuario y autenticación

Atributo
Detalles

Campos clave

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

Indexación

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

Notas especiales

Integración con proveedores de identidad externos (Keycloak, Auth0, Okta), hereda de customizable_entity

chevron-rightdispositivohashtag

Propósito: Dispositivos de seguimiento físicos

Atributo
Detalles

Campos clave

id, organization_id, device_type_id, status_id, hw_id, etiqueta

Indexación

Índices en organization_id, device_type_id, status_id, hw_id

Notas especiales

Identificador de hardware para el seguimiento del dispositivo, hereda de customizable_entity para campos personalizados

chevron-rightactivohashtag

Propósito: Activos físicos o virtuales

Atributo
Detalles

Campos clave

id, organization_id, asset_type_id, etiqueta, description

Indexación

Índices en organization_id y asset_type_id

Notas especiales

Hereda de customizable_entity, vinculado a dispositivos a través de device_asset_link

chevron-rightinventariohashtag

Propósito: Registros de inventario y almacén

Atributo
Detalles

Campos clave

id, organization_id, inventory_type_id, code

Indexación

Índice único en (organization_id, code)

Notas especiales

Códigos únicos dentro de la organización, vinculados a dispositivos a través de device_inventory_link

chevron-rightgrupo_de_activoshashtag

Propósito: Agrupación de activos con seguimiento histórico

Atributo
Detalles

Campos clave

id, organization_id, group_type_id, title_en, description

Relaciones

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

Notas especiales

Membresía basada en tiempo mediante asset_group_item, consultar miembros actuales con WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Propósito: Definiciones de campos personalizados y metadatos

Atributo
Detalles

Campos clave

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

Contenido

Los tipos de campo incluyen texto, número, booleano, fecha, fecha y hora, entity_ref, catalog_item_ref

Notas especiales

Permite campos personalizados flexibles para cualquier tipo de entidad, valores almacenados en custom_field_value_* tablas

chevron-rightacl_role_permissionhashtag

Propósito: Gestión de permisos basada en roles

Atributo
Detalles

Campos clave

id, role_id, permission_scope_id, target_entity_id, actions

Contenido

Máscara de bits de acciones (READ=1, UPDATE=2, DELETE=4, CREATE=8), permisos específicos por objetivo o para todo un tipo de entidad

Relaciones

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

Notas especiales

Funciona con user_role y acl_user_scope para determinar los permisos finales del usuario

chevron-rightaudit_eventhashtag

Propósito: Registro de auditoría unificado para todos los cambios del sistema

Atributo
Detalles

Campos clave

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

Indexación

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

Notas especiales

Particionado por occurred_at (mensual), dos categorías: auth (autenticación) y domain (eventos de negocio), almacena deltas de cambio a nivel de campo en event_data JSONB

Relaciones de datos

El repo el esquema implementa patrones de relación sofisticados para un modelado de datos flexible:

Estructuras jerárquicas

  • Las organizaciones usan rutas ltree para consultas de árbol eficientes

  • Los elementos de referencia (ci_base) admiten jerarquías opcionales

  • Mantenimiento automático de rutas mediante triggers de base de datos

Patrones de herencia

  • Herencia de tablas: customizable_entity → entidades de negocio (organización, usuario, dispositivo, activo, inventario, grupo_de_activos)

  • Herencia de ID: ci_base → tablas de tipo de referencia

  • Discriminación de tipo mediante entity_type_id y discriminador campos

Relaciones polimórficas

Ciertas tablas usan referencias polimórficas sin restricciones de clave foránea para máxima flexibilidad:

  • acl_role_permission.target_entity_id → cualquiera customizable_entity

  • acl_user_scope.target_entity_id → cualquiera customizable_entity

  • entity_tag.entity_id → cualquiera customizable_entity

Estas relaciones se validan en el nivel de la aplicación.

Información adicional

Validación de datos

El repo el esquema aplica la integridad de datos mediante múltiples mecanismos:

Restricciones de base de datos

  • Restricciones UNIQUE con soporte de borrado suave (índices parciales WHERE deleted_at IS NULL)

  • Restricciones CHECK (por ejemplo, device_relation garantiza master_idslave_id)

  • Restricciones NOT NULL en campos obligatorios

  • Valores DEFAULT para marcas de tiempo y banderas booleanas

Validación a nivel de aplicación

  • Validación de tipo de entidad para referencias polimórficas

  • Validación de catálogo para referencias de campos personalizados

  • Validación de tipo de campo personalizado

  • Gestión de arrays para campos multivalor

Optimización de consultas

Las tablas están organizadas con estrategias específicas de indexación:

Índices estándar:

  • Todas las claves foráneas tienen índices dedicados

  • Índices basados en tiempo en created_at, updated_at, deleted_at

  • Índices compuestos para columnas frecuentemente unidas

Índices especializados:

  • Índices GiST en rutas ltree para consultas jerárquicas

  • Índices únicos parciales que soportan borrado suave

  • Índices de valores de campo personalizado para filtrado y ordenación

  • Índices de eventos de auditoría por tiempo + entidad para búsquedas eficientes

Consideraciones de rendimiento:

  • Se recomienda pooling de conexiones (PgBouncer)

  • Mantenimiento VACUUM regular para tablas grandes

  • Posible particionado futuro para dispositivo tabla por organization_id

  • Vistas materializadas para cálculos complejos de control de acceso

Última actualización

¿Te fue útil?