MyEMS Документация по проектированию базы данных
Данный документ предназначен для программистов и подробно объясняет архитектуру базы данных, структуру таблиц и философию проектирования системы управления энергопотреблением MyEMS.
Содержание
- Архитектура базы данных
- Подробное описание баз данных
- Взаимосвязи потоков данных
- Спецификация проектирования структуры таблиц
Архитектура базы данных
Концепция проектирования
- Разделение данных: Разделение данных на разные б азы данных в зависимости от типа и назначения данных, чтобы избежать чрезмерного разрастания одной базы.
- Разделение операций чтения и записи: Исторические данные хранятся в формате временных рядов для обеспечения эффективных запросов.
- Горизонтальное масштабирование: Большие базы данных (
myems_historical_db,myems_energy_db) можно масштабировать независимо. - Унифицированные стандарты: Все базы данных используют одинаковый набор символов и правила сортировки.
Конфигурация базы данных
Все базы данных единообразно используют следующую конфигурацию:
- Набор символов (Character Set):
utf8mb4(поддерживает полный набор символов UTF-8, включая эмодзи) - Правило сортировки (Collation):
utf8mb4_unicode_ci(правило сортировки Unicode) - Движок хранения (Storage Engine): InnoDB (по умолчанию, поддерживает транзакции и внешние ключи)
Соглашения об именовании
- Именование баз данных:
myems_{функция}_db(нижний регистр, разделено подчеркиванием) - Именование таблиц:
tbl_{имя_сущности}(нижний регистр, разделено подчеркиванием) - Именование полей: Нижний регистр, разделено подчеркиванием, например
start_datetime_utc - Именование индексов:
tbl_{имя_таблицы}_index_{порядковый_номер}
Подробное описание баз данных
1. myems_system_db (База данных системной конфигурации)
Назначение: Хранение базовых конфигураций и метаданных системы, является центральной конфигурационной базой всей системы.
Характеристики:
- Содержит наибольшее количество таблиц (примерно 150+)
- Относительно небольшой объем данных, но сложная структура
- Содержит множество таблиц связей
Основные категории таблиц:
1.1 Таблицы базовой конфигурации
| Имя таблицы | Описание | Ключевые поля |
|---|---|---|
tbl_energy_categories | Классификация энергии (электричество, вода, газ, холод, тепло и т.д.) | id, name, unit_of_measure, kgce, kgco2e |
tbl_energy_items | Подкатегории энергопотребления (освещен ие, кондиционирование, питание и т.д.) | id, name, energy_category_id |
tbl_cost_centers | Центры затрат | id, name, external_id |
tbl_data_sources | Конфигурация источников данных | id, name, gateway_id, protocol, connection |
tbl_protocols | Конфигурация протоколов | id, name, protocol_type |
1.2 Таблицы управления оборудованием
| Имя таблицы | Описание | Ключевые поля |
|---|---|---|
tbl_equipments | Информация об оборудовании | id, name, uuid, equipment_type_id, cost_center_id |
tbl_combined_equipments | Комбинированное оборудование (объединение нескольких устройств) | id, name, is_input_counted, is_output_counted |
tbl_meters | Информация о счетчиках | id, name, uuid, energy_category_id, is_counted |
tbl_offline_meters | Офлайн-счетчики (ручной ввод) | id, name, energy_category_id |
tbl_virtual_meters | Виртуальные счетчики (расчетные) | id, name, expression (в формате JSON) |
tbl_points | Информация о точках данных | id, name, data_source_id, object_type, object_id |
1.3 Таблицы пространственной организации
| Имя таблицы | Описание | Ключевые поля |
|---|---|---|
tbl_spaces | Информация о пространствах (помещения, этажи и т.д.) | id, name, uuid, parent_space_id, area |
tbl_stores | Информация о магазинах | id, name, uuid, space_id |
tbl_tenants | Информация об арендаторах | id, name, uuid, space_id |
tbl_shopfloors | Информация о цехах | id, name, uuid, space_id |
1.4 Таблицы связей
Система использует множество таблиц связей для установления отношений "многие ко многим":
tbl_equipments_meters: Связь между оборудованием и счетчикамиtbl_equipments_offline_meters: Связь между оборудованием и офлайн-счетчикамиtbl_equipments_virtual_meters: Связь между оборудованием и виртуальными счетчикамиtbl_spaces_equipments: Связь между пространством и оборудованиемtbl_spaces_meters: Связь между пространством и счетчикамиtbl_combined_equipments_equipments: Связь между комбинированным оборудованием и устройствами- и т.д.