41 lines
1.5 KiB
SQL
41 lines
1.5 KiB
SQL
-- 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);
|