-- 002: 항공기 위치 이력 테이블 (PostGIS) -- 리플레이 기능을 위한 시계열 위치 데이터 저장 SET search_path TO kcg, public; -- PostGIS 확장 활성화 CREATE EXTENSION IF NOT EXISTS postgis; -- 항공기 위치 이력 테이블 CREATE TABLE IF NOT EXISTS aircraft_positions ( id BIGSERIAL PRIMARY KEY, icao24 VARCHAR(6) NOT NULL, callsign VARCHAR(16), position geometry(Point, 4326) NOT NULL, altitude DOUBLE PRECISION, velocity DOUBLE PRECISION, heading DOUBLE PRECISION, vertical_rate DOUBLE PRECISION, on_ground BOOLEAN DEFAULT FALSE, category VARCHAR(16), typecode VARCHAR(16), type_desc VARCHAR(128), registration VARCHAR(16), operator VARCHAR(128), squawk VARCHAR(4), source VARCHAR(16) NOT NULL, region VARCHAR(16) NOT NULL, collected_at TIMESTAMP NOT NULL DEFAULT NOW(), last_seen TIMESTAMP ); -- GiST 공간 인덱스 CREATE INDEX IF NOT EXISTS idx_aircraft_pos_geom ON aircraft_positions USING GIST (position); -- 시간 기반 인덱스 (리플레이 쿼리 최적화) CREATE INDEX IF NOT EXISTS idx_aircraft_pos_collected ON aircraft_positions (collected_at); CREATE INDEX IF NOT EXISTS idx_aircraft_pos_region_time ON aircraft_positions (region, collected_at); -- 개별 항공기 추적 CREATE INDEX IF NOT EXISTS idx_aircraft_pos_icao24 ON aircraft_positions (icao24, collected_at);