メインコンテンツへスキップ

MyEMS データベース設計ドキュメント

本ドキュメントはプログラマーを対象とし、MyEMSエネルギー管理システムのデータベースアーキテクチャ、テーブル構造、設計思想について詳細に説明します。

目次


データベースアーキテクチャ設計

設計理念

  1. データ分離: データの種別と用途に基づき異なるデータベースに分離し、単一データベースの肥大化を回避
  2. 読み書き分離: 履歴データを時系列形式で保存し、効率的なクエリを実現
  3. 水平スケーリング: 大規模データベース(historical_db、energy_db)を独立してスケーリング可能
  4. 統一規格: すべてのデータベースが同一の文字セットと照合順序を使用

データベース設定

すべてのデータベースは以下の設定を統一的に使用します:

  • 文字セット: utf8mb4(絵文字を含む完全なUTF-8文字セットをサポート)
  • 照合順序: utf8mb4_unicode_ci(Unicode照合順序)
  • ストレージエンジン: 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: 複合機器と機器の連携
  • その他...

1.5 新エネルギー設備テーブル

テーブル名説明キーフィールド
tbl_photovoltaic_power_stations太陽光発電所id, name, capacity, contact_id
tbl_energy_storage_containers蓄電コンテナid, name, rated_capacity, rated_power
tbl_energy_storage_power_stations蓄電発電所id, name, rated_capacity
tbl_microgridsマイクログリッドid, name, address
tbl_charging_stations充電スタンドid, name, rated_capacity, rated_power

1.6 制御・スケジューリングテーブル

テーブル名説明キーフィールド
tbl_commands制御コマンドid, name, topic, payload(JSON形式)
tbl_control_modes制御モードid, name, is_active
tbl_control_modes_times制御モード時間帯id, control_mode_id, start_time_of_day, end_time_of_day

1.7 その他設定テーブル

  • tbl_contacts: 連絡先情報
  • tbl_distribution_systems: 配電システム
  • tbl_distribution_circuits: 配電回路
  • tbl_energy_flow_diagrams: エネルギーフロー図
  • tbl_tariffs: 電気料金設定
  • tbl_working_calendars: 勤務カレンダー
  • tbl_web_messages: Webメッセージ

開発上の注意点:

  • すべてのテーブルは主キーとしてid(BIGINT AUTO-INCREMENT)を持つ
  • ほとんどのテーブルは外部システム連携用にuuid(CHAR(36))フィールドを持つ
  • 連携テーブルは通常idと2つの外部キーフィールドのみを持つ
  • JSONフィールドは整形されたJSON文字列の保存にLONGTEXT型を使用

2. myems_historical_db(履歴データベース)

目的: リアルタイム監視データと履歴データを保存し、システムのデータ量において最大規模のデータベースの1つです。

特徴:

  • データ量が膨大で、時系列ストレージを採用
  • 生データと最新値キャッシュテーブルを含む
  • データ品質ラベル(is_bad, is_published)をサポート

主要テーブル構造:

テーブル名説明キーフィールドインデックス戦略
tbl_analog_valueアナログ履歴データpoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_analog_value_latest最新アナログ値(キャッシュ)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_digital_valueデジタル履歴データpoint_id, utc_date_time, actual_value (INT)(point_id, utc_date_time), (utc_date_time)
tbl_digital_value_latest最新デジタル値(キャッシュ)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_energy_valueエネルギー消費履歴データpoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_energy_value_latest最新エネルギー消費値(キャッシュ)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_text_valueテキスト履歴データpoint_id, utc_date_time, actual_value (LONGTEXT)(point_id, utc_date_time), (utc_date_time)
tbl_text_value_latest最新テキスト値(キャッシュ)point_id, utc_date_time, actual_value(point_id, utc_date_time)

ファイルストレージテーブル:

テーブル名説明キーフィールド
tbl_cost_files原価ファイル(Excel/CSV)file_name, uuid, upload_datetime_utc, status, file_object (LONGBLOB)
tbl_offline_meter_filesオフラインメーターデータファイルfile_name, uuid, upload_datetime_utc, status, file_object
tbl_data_repair_filesデータ修復ファイルfile_name, uuid, upload_datetime_utc, status, file_object
tbl_energy_plan_filesエネルギー消費計画ファイルfile_name, uuid, upload_datetime_utc, status, file_object

データ型説明:

  • actual_value: DECIMAL(21,6) - 6桁の小数を持つ高精度数値をサポート
  • utc_date_time: DATETIME - UTC時間、すべての時間はUTCを統一的に使用
  • is_bad: BOOL - データ品質ラベル、Trueは不良データを示す
  • is_published: BOOL - 公開フラグ、Trueは公開済みを示す

開発上の注意点:

  • すべての時間フィールドはUTC時間を使用し、フロントエンド表示時にローカル時間に変換
  • _latestテーブルは最新値のクイッククエリに使用し、履歴テーブルのスキャンを回避
  • ファイルテーブルはバイナリファイルの保存にLONGBLOBを使用、サイズ制限に注意
  • 履歴データを定期的にクリーニングし、テーブルの肥大化による性能低下を回避

3. myems_energy_db(エネルギー消費データベース)

目的: 各種機器のエネルギー消費統計データを保存し、時間帯、日、月、年別に集計します。

特徴:

  • データはmyems-aggregationサービスにより計算生成される
  • 時間粒度別に時間帯、日、月、年テーブルに分類
  • エネルギー種別とエネルギー消費細目別の統計をサポート

テーブル命名規則:

  • tbl_{オブジェクト種別}_{方向}_{分類}_{時間粒度}
  • オブジェクト種別: meter, equipment, combined_equipment, space, store, tenant, shopfloor
  • 方向: input(入力), output(出力)
  • 分類: category(エネルギー種別)、item(エネルギー消費細目)
  • 時間粒度: hourly, daily, monthly, yearly

主要テーブル構造:

3.1 エネルギー消費メーターテーブル

テーブル名説明キーフィールド
tbl_meter_hourlyメーター時間帯別エネルギー消費量meter_id, start_datetime_utc, actual_value
tbl_meter_dailyメーター日別エネルギー消費量meter_id, start_datetime_utc, actual_value
tbl_meter_monthlyメーター月別エネルギー消費量meter_id, start_datetime_utc, actual_value
tbl_meter_yearlyメーター年別エネルギー消費量meter_id, start_datetime_utc, actual_value
tbl_offline_meter_hourlyオフラインメーター時間帯別エネルギー消費量offline_meter_id, start_datetime_utc, actual_value
tbl_virtual_meter_hourly仮想メーター時間帯別エネルギー消費量virtual_meter_id, start_datetime_utc, actual_value

3.2 設備エネルギー消費テーブル

テーブル名説明キーフィールド
tbl_equipment_input_category_hourly設備入力エネルギー消費量(種別別)equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_equipment_input_item_hourly設備入力エネルギー消費量(細目別)equipment_id, energy_item_id, start_datetime_utc, actual_value
tbl_equipment_output_category_hourly設備出力エネルギー消費量(種別別)equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_hourly複合機器入力エネルギー消費量(種別別)combined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_output_category_hourly複合機器出力エネルギー消費量(種別別)combined_equipment_id, energy_category_id, start_datetime_utc, actual_value

3.3 空間エネルギー消費テーブル

テーブル名説明キーフィールド
tbl_space_input_category_hourly空間入力エネルギー消費量(種別別)space_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_item_hourly空間入力エネルギー消費量(細目別)space_id, energy_item_id, start_datetime_utc, actual_value
tbl_space_output_category_hourly空間出力エネルギー消費量(種別別)space_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_hourly店舗入力エネルギー消費量store_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_hourlyテナント入力エネルギー消費量tenant_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_hourly工場入力エネルギー消費量shopfloor_id, energy_category_id, start_datetime_utc, actual_value

3.4 新エネルギー設備エネルギー消費テーブル

テーブル名説明キーフィールド
tbl_photovoltaic_power_station_hourly太陽光発電所時間帯別発電量photovoltaic_power_station_id, start_datetime_utc, actual_value
tbl_energy_storage_container_charge_hourly蓄電コンテナ充電量energy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_discharge_hourly蓄電コンテナ放電量energy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_buy_hourly蓄電コンテナ電力購入量energy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_sell_hourly蓄電コンテナ電力販売量energy_storage_container_id, start_datetime_utc, actual_value
tbl_microgrid_charge_hourlyマイクログリッド充電量microgrid_id, start_datetime_utc, actual_value
tbl_microgrid_discharge_hourlyマイクログリッド放電量microgrid_id, start_datetime_utc, actual_value

インデックス設計:

  • すべてのテーブルは複合インデックスを持つ:(オブジェクトID, 分類ID, start_datetime_utc) または (オブジェクトID, start_datetime_utc)
  • オブジェクト別・時間範囲別のクイッククエリをサポート

開発上の注意点:

  • start_datetime_utcは時間帯の開始時間を表す(例:2024-01-01 00:00:00は1月1日0時~1時を示す)
  • actual_valueは集計値であり、生データではない
  • データは集計サービスにより定期的に計算され、リアルタイム書き込みではない
  • クエリ時のタイムゾーン変換に注意

4. myems_billing_db(請求データベース)

目的: 請求関連のエネルギー消費データを保存します。構造はmyems_energy_dbに類似しますが、データは電気料金に基づいて計算されます。

特徴:

  • テーブル構造はmyems_energy_dbと同一
  • データはmyems-aggregationサービスにより料金設定を使用して計算される
  • 時間帯別料金、段階的価格設定などの複雑な請求ルールをサポート

主要テーブル:

  • myems_energy_dbと同一のテーブル構造
  • データ値は対応する料金が乗算され、通常通貨単位(CNY、USDなど)で表記

開発上の注意点:

  • 請求データはmyems_system_db.tbl_tariffsの料金設定に依存する
  • 原価センター(cost_center)との連携が必須
  • 複数の料金戦略(時間帯別、段階的、容量ベースなど)をサポート

5. myems_carbon_db(炭素排出データベース)

目的: 炭素フットプリント計算のための炭素排出関連エネルギーデータを保存します。

特徴:

  • テーブル構造はmyems_energy_dbと同一
  • データはmyems-aggregationサービスにより炭素排出係数に基づいて計算される
  • 炭素排出係数はmyems_system_db.tbl_energy_categories.kgco2eに保存

主要テーブル:

  • myems_energy_dbと同一のテーブル構造
  • データ値は炭素排出係数が乗算され、通常kgCO2e(二酸化炭素等量キログラム)で表記

開発上の注意点:

  • 炭素排出係数は時間経過により変動する可能性があるため、履歴係数のサポートが必須
  • 電気、ガス、石油などの異なるエネルギー種別には異なる排出係数が適用される
  • スコープ1、スコープ2、スコープ3の炭素排出計算をサポート

6. myems_energy_baseline_db(エネルギーベースラインデータベース)

目的: 省エネ分析とエネルギー効率評価のためのエネルギーベースラインデータを保存します。

特徴:

  • テーブル構造はmyems_energy_dbに類似
  • ベースラインデータは通常履歴データまたは標準値に基づいて計算される
  • 実際のエネルギー消費量とベースライン消費量を比較し、省エネ量を計算するために使用

主要テーブル:

  • myems_energy_dbと同一のテーブル構造
  • 実際の値ではなくベースライン値を保存

開発上の注意点:

  • ベースラインデータは定期的に更新する必要がある
  • 複数のベースライン計算方法(履歴平均、回帰分析、標準値など)をサポート

7. myems_energy_model_db(エネルギー消費モデルデータベース)

目的: 年間8760時間のエネルギー消費モデルデータ(年間8760時間)を保存します。

特徴:

  • 各オブジェクトは8760件のレコード(1年間の時間帯別データ)を保存
  • エネルギー消費予測と計画に使用
  • テーブル名には接尾辞_8760が含まれる

主要テーブル:

テーブル名説明キーフィールド
tbl_meter_8760メーター8760時間モデルmeter_id, start_datetime_utc, actual_value
tbl_equipment_input_category_8760設備入力エネルギー消費モデルequipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_8760複合機器入力エネルギー消費モデルcombined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_category_8760空間入力エネルギー消費モデルspace_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_8760工場入力エネルギー消費モデルshopfloor_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_8760店舗入力エネルギー消費モデルstore_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_8760テナント入力エネルギー消費モデルtenant_id, energy_category_id, start_datetime_utc, actual_value

開発上の注意点:

  • 8760時間モデルは通常履歴データまたは標準モデルに基づいて生成される
  • 年間エネルギー消費予測と予算編成に使用
  • 週、月、四半期などの次元別の閲覧をサポート

8. myems_energy_plan_db(エネルギー計画データベース)

目的: エネルギー計画と目標データを保存します。

特徴:

  • テーブル構造はmyems_energy_dbに類似
  • 実際の値ではなく計画値を保存
  • エネルギー消費予算と目標管理に使用

主要テーブル:

  • myems_energy_dbと同一のテーブル構造
  • データは計画ファイルまたは手動入力により取得

開発上の注意点:

  • 計画データは実際のデータと比較分析する必要がある
  • 多段階計画(年間、月間、週間など)をサポート

9. myems_energy_prediction_db(エネルギー予測データベース)

目的: エネルギー消費予測データを保存します。

特徴:

  • テーブル構造はmyems_energy_dbに類似
  • 実際の値ではなく予測値を保存
  • エネルギー消費予測と警告に使用

主要テーブル:

  • myems_energy_dbと同一のテーブル構造
  • データは予測アルゴリズムにより生成される

開発上の注意点:

  • 予測データは定期的に更新する必要がある
  • 複数の予測アルゴリズム(時系列、機械学習など)をサポート
  • 予測精度の継続的な最適化が必要

10. myems_fdd_db(故障診断データベース)

目的: 故障検出と診断に関連するデータを保存します。

特徴:

  • 複数のアラートチャネル(Web、メール、SMS、WeChat、電話)をサポート
  • ルールエンジンは複雑な故障検出ロジックをサポート
  • 故障メッセージの確認と処理をサポート

主要テーブル構造:

テーブル名説明キーフィールド
tbl_rules診断ルールid, name, category, fdd_code, priority, channel, expression (JSON), message_template, is_enabled
tbl_web_messagesWebメッセージid, rule_id, user_id, subject, category, priority, message, status, belong_to_object_type, belong_to_object_id
tbl_email_messagesメールメッセージid, rule_id, recipient_name, recipient_email, subject, message, attachment_file_name, status
tbl_text_messages_outboxSMS送信ボックスid, rule_id, recipient_mobile, message, status, acknowledge_code
tbl_text_messages_inboxSMS受信ボックスid, sender_mobile, message, status
tbl_wechat_messages_outboxWeChatメッセージ送信ボックスid, rule_id, recipient_openid, message_template_id, message_data (JSON)
tbl_wechat_messages_inboxWeChatメッセージ受信ボックスid, sender_openid, message, status
tbl_email_serversメールサーバー設定id, host, port, requires_authentication, user_name, password, from_addr
tbl_wechat_configsWeChat設定id, api_server, app_id, app_secret, access_token, expires_datetime_utc

ルールカテゴリ(category):

  • REALTIME: リアルタイムアラーム
  • SYSTEM: システムアラーム
  • SPACE: 空間アラーム
  • METER: メーターアラーム
  • TENANT: テナントアラーム
  • STORE: 店舗アラーム
  • SHOPFLOOR: 工場アラーム
  • EQUIPMENT: 設備アラーム
  • COMBINEDEQUIPMENT: 複合機器アラーム

優先度(priority):

  • CRITICAL: クリティカル
  • HIGH: 高
  • MEDIUM: 中
  • LOW: 低

開発上の注意点:

  • expressionフィールドはJSON形式でルール式を保存
  • message_templateは変数置換をサポート(例:$name, $value
  • ルールはスケジュール実行と即時実行の両方をサポート
  • メッセージステータス:newsentacknowledged / timeout

11. myems_user_db(ユーザーデータベース)

目的: ユーザー認証、APIキー、メールメッセージなどを保存します。

特徴:

  • データ量は少ないが、セキュリティ要件が高い
  • ユーザー権限管理をサポート
  • APIキー認証をサポート

主要テーブル構造:

テーブル名説明キーフィールド
tbl_usersユーザー情報id, name, uuid, display_name, email, salt, password, is_admin, is_read_only, privilege_id, account_expiration_datetime_utc, password_expiration_datetime_utc, failed_login_count
tbl_privileges権限設定id, name, data(JSON形式)
tbl_sessionsユーザーセッションid, user_uuid, token, utc_expires
tbl_api_keysAPIキーid, name, token, created_datetime_utc, expires_datetime_utc
tbl_email_messagesメールメッセージid, recipient_name, recipient_email, subject, message, attachment_file_name, status, scheduled_datetime_utc
tbl_email_message_sessionsメール会話id, recipient_email, token, expires_datetime_utc
tbl_logs操作ログid, user_uuid, request_datetime_utc, request_method, resource_type, resource_id, request_body (JSON)
tbl_notifications通知メッセージid, user_id, created_datetime_utc, status, subject, message, url
tbl_new_users新規ユーザー(アクティベーション待ち)id, name, uuid, display_name, email, salt, password
tbl_verification_codes認証コードid, recipient_email, verification_code, created_datetime_utc, expires_datetime_utc

セキュリティ設計:

  • パスワードはソルト+ハッシュで保存し、平文保存を禁止
  • アカウントとパスワードの有効期限をサポート
  • ログイン失敗試行回数制限をサポート
  • APIキーは有効期限をサポート

開発上の注意点:

  • パスワードフィールドは暗号化保存する必要があり、直接クエリしない
  • セッショントークンは定期的にクリーニングし、期限切れレコードを削除
  • 操作ログは監査のためにすべての重要なアクションを記録する
  • 通知ステータス:unreadreadarchived

12. myems_reporting_db(レポートデータベース)

目的: レポート関連のメールメッセージと添付ファイルを保存します。

特徴:

  • データ量は少ない
  • レポートテンプレートと生成ファイルの保存をサポート

主要テーブル構造:

テーブル名説明キーフィールド
tbl_reportsレポート設定id, name, uuid, expression (JSON), is_enabled, last_run_datetime_utc, next_run_datetime_utc, is_run_immediately
tbl_reports_filesレポートファイルid, uuid, create_datetime_utc, file_name, file_type (xlsx/pdf/docx), file_object (LONGBLOB)
tbl_template_filesレポートテンプレートファイルid, uuid, report_id, file_name, file_type, file_object
tbl_email_messagesメールメッセージid, recipient_name, recipient_email, subject, message, attachment_file_name, attachment_file_object, status

開発上の注意点:

  • レポートファイルはExcel、PDF、Word形式をサポート
  • テンプレートファイルはレポート生成に使用
  • レポートはスケジュール生成と即時生成の両方をサポート
  • ファイルはLONGBLOBで保存、サイズ制限に注意

13. myems_production_db(生産データベース)

目的: 生産関連の製品データを保存します。

特徴:

  • データ量は少ない
  • 生産エネルギー消費相関分析に使用

主要テーブル構造:

テーブル名説明キーフィールド
tbl_products製品情報id, name, uuid, unit_of_measure, tag, standard_product_coefficient
tbl_teamsチーム情報id, name, uuid, description
tbl_shiftsシフト情報id, shopfloor_id, team_id, product_id, product_count, start_datetime_utc, end_datetime_utc, reference_timestamp
tbl_shopfloor_hourly工場時間帯別生産量id, shopfloor_id, start_datetime_utc, product_id, product_count
tbl_space_hourly空間時間帯別生産量id, space_id, start_datetime_utc, product_id, product_count
tbl_shopfloors_products工場と製品の連携id, shopfloor_id, product_id
tbl_shopfloors_teams工場とチームの連携id, shopfloor_id, team_id

開発上の注意点:

  • 生産データは製品単位エネルギー消費量の計算に使用
  • 製品、チーム、工場などの次元別の統計をサポート
  • エネルギー消費データと連携してエネルギー効率指標を計算

データフロー関係

データ収集プロセス

デバイス / センサー
↓ (Modbus TCP / MQTT / HTTP)
myems-modbus-tcp(データ収集サービス)
↓ (書き込み)
myems_historical_db.tbl_analog_value / tbl_digital_value / tbl_energy_value
↓ (データ正規化)
myems-normalization(正規化サービス)
↓ (データクリーニング)
myems-cleaning(クリーニングサービス)
↓ (データ集計)
myems-aggregation(集計サービス)
↓ (書き込み)
myems_energy_db(エネルギーデータ)
myems_billing_db(請求データ)
myems_carbon_db(炭素排出データ)

データクエリフロー

ユーザーリクエスト

myems-api(APIサービス)
↓ (クエリ)
myems_system_db(設定データ)
myems_historical_db(履歴データ)
myems_energy_db(エネルギーデータ)
↓ (レスポンス)
myems-web / myems-admin(フロントエンド表示)

データ関係図

myems_system_db.tbl_points
↓ (point_id)
myems_historical_db.tbl_analog_value
↓ (集計計算)
myems_energy_db.tbl_meter_hourly
↓ (リンク)
myems_system_db.tbl_meters
↓ (リンク)
myems_system_db.tbl_equipments
↓ (リンク)
myems_system_db.tbl_spaces

テーブル構造設計仕様

共通フィールド

すべてのテーブルは以下の共通フィールドを含みます:

フィールド名説明
idBIGINT NOT NULL AUTO_INCREMENT主キー、自動増分
nameVARCHAR(255)名称
uuidCHAR(36)UUID、外部システム連携に使用
descriptionVARCHAR(255)説明(オプション)

時間フィールド

フィールド名説明
utc_date_timeDATETIMEUTC時間(履歴データテーブル)
start_datetime_utcDATETIME時間帯の開始時間(集計データテーブル)
created_datetime_utcDATETIME作成時間
updated_datetime_utcDATETIME更新時間
last_run_datetime_utcDATETIME最終実行時間
next_run_datetime_utcDATETIME次回実行時間

注意: すべての時間フィールドはUTC時間を統一的に使用し、フロントエンド表示時にローカル時間に変換する必要があります。

数値フィールド

フィールド名説明
actual_valueDECIMAL(21, 6)実測値、高精度(6桁小数)をサポート
set_valueDECIMAL(21, 6)設定値
rated_capacityDECIMAL(21, 6)定格容量
rated_powerDECIMAL(21, 6)定格電力

JSONフィールド

フィールド名説明
connectionLONGTEXT接続設定(JSON形式)
expressionLONGTEXT式(JSON形式)
payloadLONGTEXTペイロード(JSON形式)
dataLONGTEXTデータ(JSON形式)

注意: JSONフィールドは整形されたJSON文字列を保存し、使用前に解析する必要があります。

ステータスフィールド

フィールド名説明
is_enabledBOOL有効フラグ
is_activeBOOLアクティブ状態
is_badBOOL不良データフラグ
is_publishedBOOL公開済みフラグ
is_countedBOOL統計対象フラグ
statusVARCHAR(32)ステータス(例:new, sent, done, error)

インデックス設計

主キーインデックス:

  • すべてのテーブルはPRIMARY KEY (id)を持つ

ユニークインデックス:

  • キーフィールド(name, uuidなど)には通常ユニークインデックスを設定

複合インデックス:

  • 頻繁にクエリされるフィールドの組み合わせに複合インデックスを作成
  • 例:(point_id, utc_date_time), (meter_id, start_datetime_utc)

時間インデックス:

  • 時間フィールドには通常単独インデックスを設定し、時間範囲クエリをサポート