MMCL/docs/MMCL_table_layout.md
2026-09-04 11:24:42 +09:00

8.7 KiB

MMCL 데이터베이스 테이블 레이아웃 (전체 상세판)

프로젝트에 구성된 총 9개의 테이블 구조에 대한 상세 레이아웃 및 명세서입니다.

ERD 요약

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)"
    dev_info ||--o{ ai_control_log : "AI 제어 이력 생성"
    dev_info ||--o{ event_log : "이벤트/에러 로그 생성"
    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'
led_ip VARCHAR(20) YES [LED] 경광등 IP 주소 (추가) 중앙 관제 에이전트 라우팅용
led_port INT(11) YES [LED] 경광등 포트 번호 (추가) 기본값 20000

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 초기 전압값

8. ai_control_log (AI 제어 로그)

LLM이 실행한 설비/LED 제어 이력을 기록하며, 'AI 제어 로그' 화면에 사용됩니다.

컬럼명 데이터 타입 Key NULL 설명 비고
log_id INT(11) PK NO 로그 고유 번호 Auto Increment
req_text TEXT YES 요청 자연어
dev_no INT(11) FK NO 제어 대상 설비 고유 번호 dev_info.dev_no 참조
target_val VARCHAR(255) YES 제어 목표/결과값
created_at DATETIME IDX NO 제어 실행 시각 기본값: CURRENT_TIMESTAMP

9. event_log (알림/이벤트 로그)

설비의 에러 및 이벤트 발생/해제 이력을 기록하며, '알림(이벤트 로그)' 화면에 사용됩니다.

컬럼명 데이터 타입 Key NULL 설명 비고
event_id INT(11) PK NO 이벤트 고유 번호 Auto Increment
dev_no INT(11) FK NO 발생 대상 설비 고유 번호 dev_info.dev_no 참조
event_type VARCHAR(50) NO 이벤트 유형 예: 'ERROR', 'WARNING', 'INFO'
status VARCHAR(20) NO 상태 예: '발생', '해제'
occurred_at DATETIME IDX NO 발생 시각 기본값: CURRENT_TIMESTAMP
resolved_at DATETIME YES 해제 시각