# MMCL 데이터베이스 테이블 레이아웃 (전체 상세판) 프로젝트에 구성된 **총 7개**의 테이블 구조에 대한 상세 레이아웃 및 명세서입니다. ## ERD 요약 ```mermaid erDiagram dev_info ||--o{ pos_info : "위치 참조 (dev_posID)" dev_info ||--o| sensor_info : "NILM 센서 참조 (nilm_sensorNo)" dev_info ||--o| sensor_info : "LED 센서 참조 (led_sensorNo)" dev_info ||--|| nilm_init_value : "초기값 참조 (dev_no)" sensor_info ||--o{ sensor_history_log : "측정 이력 생성" sensor_info }|--|| type_info : "센서 타입 (1:NILM, 2:경광등)" sensor_info }o--o{ status_info : "상태코드 참조" ``` --- ## 전체 테이블 상세 명세서 ### 1. `dev_info` (설비/기계 마스터 정보) NILM 장치가 연결된 설비 및 기계들의 기본 정보와, 해당 설비에 매핑된 센서 번호(NILM, LED)를 관리합니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `dev_no` | INT(11) | PK | NO | 설비 고유 번호 | Auto Increment | | `dev_id` | VARCHAR(15) | UNIQUE | YES | 설비 식별 ID | | | `dev_name` | VARCHAR(50) | UNIQUE | YES | 설비명 | | | `dev_desc` | VARCHAR(100) | | YES | 설비 상세 설명 | | | `dev_posID` | VARCHAR(100) | FK | YES | 위치 식별 ID | `pos_info.pos_id` 참조 | | `led_sensorNo` | INT(11) | FK | YES | 매핑된 경광등(LED) 센서 번호 | `sensor_info.sensor_no` 참조 | | `nilm_sensorNo` | INT(11) | FK | YES | 매핑된 NILM 센서 번호 | `sensor_info.sensor_no` 참조 | | `nilm_chNo` | INT(11) | | YES | 해당 설비가 연결된 NILM 채널 번호 | | --- ### 2. `sensor_info` (센서 마스터 및 실시간/목표 상태) NILM 장비의 최신 실시간 계측값 및 경광등의 현재/목표 상태를 관리하는 메인 테이블입니다. LLM 핸드쉐이크를 지원하기 위한 `target` 필드가 포함되어 있습니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `sensor_no` | INT(11) | PK | NO | 센서 고유 번호 | Auto Increment | | `sensor_id` | VARCHAR(15) | UNIQUE | YES | 센서 식별 ID | | | `sensor_name` | VARCHAR(50) | | YES | 센서명 | | | `_desc` | VARCHAR(100) | | YES | 센서 설명 | | | `sensor_typeid` | INT(11) | FK | NO | 센서 타입 | 1:NILM, 2:경광등 (`type_info` 참조) | | `update_time` | DATETIME | | YES | 마지막 갱신 일시 | | | `mqtt_topic` | VARCHAR(255) | | YES | **[NILM] 구독 MQTT 토픽** | (추가) 에이전트 동적 매핑용 | | `value_pf` | FLOAT | | YES | [NILM] 역률 (Power Factor) | | | `value_ch1_current` | FLOAT | | YES | [NILM] CH1 최신 전류 | | | `value_ch1_volt` | FLOAT | | YES | [NILM] CH1 최신 전압 | | | `value_ch1_pwr` | FLOAT | | YES | [NILM] CH1 최신 전력 | | | `value_ch2_current` | FLOAT | | YES | [NILM] CH2 최신 전류 | | | `value_ch2_volt` | FLOAT | | YES | [NILM] CH2 최신 전압 | | | `value_ch2_pwr` | FLOAT | | YES | [NILM] CH2 최신 전력 | | | `value_ch3_current` | FLOAT | | YES | [NILM] CH3 최신 전류 | | | `value_ch3_volt` | FLOAT | | YES | [NILM] CH3 최신 전압 | | | `value_ch3_pwr` | FLOAT | | YES | [NILM] CH3 최신 전력 | | | `value_ch1_statusID` | INT(11) | FK | YES | [LED] Green LED **현재** 상태 | `status_info` 참조 (0:OFF, 1:ON) | | `value_ch2_statusID` | INT(11) | FK | YES | [LED] Yellow LED **현재** 상태 | `status_info` 참조 | | `value_ch3_statusID` | INT(11) | FK | YES | [LED] Red LED **현재** 상태 | `status_info` 참조 | | `target_ch1_statusID` | INT(11) | FK | YES | **[LED] Green LED 목표 상태** | (추가) 백엔드/LLM 제어 지시값 | | `target_ch2_statusID` | INT(11) | FK | YES | **[LED] Yellow LED 목표 상태** | (추가) 백엔드/LLM 제어 지시값 | | `target_ch3_statusID` | INT(11) | FK | YES | **[LED] Red LED 목표 상태** | (추가) 백엔드/LLM 제어 지시값 | | `last_updated_by` | VARCHAR(50)| | YES | **마지막 제어 주체** | (추가) 예: 'LLM', 'RULE_ENGINE' | --- ### 3. `sensor_history_log` (시계열 이력 로그) - **[NEW]** `sensor_info`의 측정값이 지속적으로 갱신될 때마다 그 시점의 데이터를 시계열(Time-series) 이력으로 누적 적재하는 로그 테이블입니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `log_no` | INT(11) | PK | NO | 로그 고유 번호 | Auto Increment | | `sensor_no` | INT(11) | FK | NO | 측정 대상 센서 고유 번호 | `sensor_info.sensor_no` 참조 | | `log_time` | DATETIME| IDX | NO | 로그 생성 일시 | 기본값: CURRENT_TIMESTAMP | | `value_ch1_current` | FLOAT | | YES | [NILM] CH1 이력 전류 | | | `value_ch1_volt` | FLOAT | | YES | [NILM] CH1 이력 전압 | | | `value_ch1_pwr` | FLOAT | | YES | [NILM] CH1 이력 전력 | | | `value_ch2_current` | FLOAT | | YES | [NILM] CH2 이력 전류 | | | `value_ch2_volt` | FLOAT | | YES | [NILM] CH2 이력 전압 | | | `value_ch2_pwr` | FLOAT | | YES | [NILM] CH2 이력 전력 | | | `value_ch3_current` | FLOAT | | YES | [NILM] CH3 이력 전류 | | | `value_ch3_volt` | FLOAT | | YES | [NILM] CH3 이력 전압 | | | `value_ch3_pwr` | FLOAT | | YES | [NILM] CH3 이력 전력 | | --- ### 4. `pos_info` (위치 정보 마스터) 기계/설비가 설치된 공장 내 위치 구역 코드를 관리합니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `pos_id` | VARCHAR(15) | IDX | YES | 위치 식별 ID | 예: 'POS_01' | | `pos_name` | VARCHAR(50) | | YES | 위치명 | 예: 'A동 1구역' | --- ### 5. `type_info` (센서/장비 타입 마스터) `sensor_info`에 등록된 센서의 유형(Type)을 정의합니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `dev_typeID` | INT(11) | IDX | YES | 장비(센서) 타입 식별 ID | 1: NILM, 2: 경광등 | | `dev_name` | VARCHAR(50) | | YES | 장비 타입명 | | --- ### 6. `status_info` (상태 코드 마스터) 경광등 상태(ON/OFF 등)와 같은 각종 상태값의 공통 코드를 관리합니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `sts_id` | INT(11) | IDX | YES | 상태 식별 ID | 예: 0, 1 | | `sts_name` | VARCHAR(50) | | YES | 상태명 | 예: 'OFF', 'ON' | | `sts_level` | INT(11) | | YES | 상태 레벨 | | --- ### 7. `nilm_init_value` (NILM 초기/기준 설정값) 특정 설비(`dev_no`)에 대한 NILM 채널별 초기(기준) 전류/전압 측정값을 보관합니다. | 컬럼명 | 데이터 타입 | Key | NULL | 설명 | 비고 | | --- | --- | --- | --- | --- | --- | | `dev_no` | INT(11) | IDX | YES | 설비 고유 번호 | `dev_info.dev_no` 참조 | | `ch1_current` | FLOAT | | YES | CH1 초기 전류값 | | | `ch1_volt` | FLOAT | | YES | CH1 초기 전압값 | | | `ch2_current` | FLOAT | | YES | CH2 초기 전류값 | | | `ch2_volt` | FLOAT | | YES | CH2 초기 전압값 | | | `ch3_current` | FLOAT | | YES | CH3 초기 전류값 | | | `ch3_volt` | FLOAT | | YES | CH3 초기 전압값 | |