Documento de Diseño de la Base de Datos de MyEMS
Este documento está dirigido a programadores y ofrece una explicación detallada de la arquitectura de la base de datos, la estructura de las tablas y la filosofía de diseño del sistema de gestión energética MyEMS.
Tabla de Contenidos
- Diseño de la arquitectura de la base de datos
- Descripción detallada de la base de datos
- Relación del flujo de datos
- Especificación de diseño de la estructura de las tablas
Diseño de la arquitectura de la base de datos
Concepto de diseño
- Separación de datos: Separar los datos en diferentes bases de datos según el tipo y uso de los datos, para evitar que una única base de datos crezca demasiado.
- Separación de lectura y escritura: Los datos históricos se almacenan en formato de series temporales, lo que permite consultas eficientes.
- Escalabilidad horizontal: Las bases de datos de gran tamaño (
historical_db,energy_db) pueden escalarse de forma independiente. - Normas unificadas: Todas las bases de datos utilizan el mismo conjunto de caracteres y reglas de ordenación.
Configuración de la base de datos
Todas las bases de datos utilizan uniformemente la siguiente configuración:
- Conjunto de caracteres:
utf8mb4(admite el conjunto de caracteres UTF-8 completo, incluyendo emojis) - Regla de ordenación:
utf8mb4_unicode_ci(regla de ordenación Unicode) - Motor de almacenamiento: InnoDB (predeterminado, admite transacciones y claves foráneas)
Convenciones de nomenclatura
- Nomenclatura de bases de datos:
myems_{Función}_db(minúsculas, separadas por guiones bajos) - Nomenclatura de tablas:
tbl_{Nombre de la Entidad}(minúsculas, separadas por guiones bajos) - Nomenclatura de campos: Minúsculas, separadas por guiones bajos, por ejemplo
start_datetime_utc - Nomenclatura de índices:
tbl_{Nombre de la Tabla}_index_{Número de Secuencia}
Descripción detallada de la base de datos
1. Myems_system_db (base de datos de configuración del sistema)
Propósito: Almacena la configuración básica y los metadatos del sistema, y funciona como la biblioteca de configuración principal de todo el sistema.
Características:
- Contiene el mayor número de tablas (aproximadamente más de 150 tablas)
- El volumen de datos es relativamente pequeño, pero la estructura es compleja
- Contiene una gran cantidad de tablas de asociación
Clasificación de tablas principales:
1.1 Tabla de configuración básica
| nombre de la tabla | Instrucciones | campo clave |
|---|---|---|
tbl_energy_categories | Clasificación de energías (electricidad, agua, gas, frío, calor, etc.) | id, name, unit_of_measure, kgce, kgco2e |
tbl_energy_items | Subítems de consumo energético (iluminación, aire acondicionado, energía eléctrica, etc.) | id, name, energy_category_id |
tbl_cost_centers | Centro de costos | id, name, external_id |
tbl_data_sources | Configuración de fuentes de datos | id, name, gateway_id, protocol, connection |
tbl_protocols | Configuración de protocolos | id, name, protocol_type |
1.2 Tabla de gestión de equipos
| nombre de la tabla | Instrucciones | campo clave |
|---|---|---|
tbl_equipments | Información de dispositivos | id, name, uuid, equipment_type_id, cost_center_id |
tbl_combined_equipments | Dispositivo combinado (combinación de múltiples dispositivos) | id, name, is_input_counted, is_output_counted |
tbl_meters | Información de medidores | id, name, uuid, energy_category_id, is_counted |
tbl_offline_meters | Medidor sin conexión (ingresado manualmente) | id, name, energy_category_id |
tbl_virtual_meters | Medidor virtual (calculado) | id, name, expression (en formato JSON) |
tbl_points | Información de puntos de datos | id, name, data_source_id, object_type, object_id |
1.3 Tabla de organización espacial
| nombre de la tabla | Instrucciones | campo clave |
|---|---|---|
tbl_spaces | Información espacial (habitaciones, plantas, etc.) | id, name, uuid, parent_space_id, area |
tbl_stores | Información de tiendas | id, name, uuid, space_id |
tbl_tenants | Información de inquilinos | id, name, uuid, space_id |
tbl_shopfloors | Información de talleres | id, name, uuid, space_id |
1.4 Tabla de relaciones de asociación
El sistema utiliza una gran cantidad de tablas de asociación para establecer relaciones de muchos a muchos:
tbl_equipments_meters: Asociación entre equipos y medidorestbl_equipments_points: Asociación entre equipos y puntos de datostbl_spaces_equipments: Asociación entre espacios y equipostbl_spaces_meters: Asociación entre espacios y medidorestbl_combined_equipments_equipments: Asociación entre equipos combinados y dispositivos- etc...
1.5 Lista de equipos de energías renovables
| nombre de la tabla | Instrucciones | campo clave |
|---|---|---|
tbl_photovoltaic_power_stations | Planta de energía fotovoltaica | id, name, capacity, contact_id |
tbl_energy_storage_containers | Contenedor de almacenamiento de energía | id, name, rated_capacity, rated_power |
tbl_energy_storage_power_stations | Planta de almacenamiento de energía | id, name, rated_capacity |
tbl_microgrids | Microred eléctrica | id, name, address |
tbl_charging_stations | Estación de carga | id, name, rated_capacity, rated_power |
1.6 Tabla de control y programación
| nombre de la tabla | Instrucciones | campo clave |
|---|---|---|
tbl_commands | Comando de control | id, name, topic, payload (en formato JSON) |
tbl_control_modes | Modo de control | id, name, is_active |
tbl_control_modes_times | Período de tiempo del modo de control | id, control_mode_id, start_time_of_day, end_time_of_day |