42 lines
2.2 KiB
SQL
42 lines
2.2 KiB
SQL
-- ============================================================
|
|
-- 027: 민감자원 테이블 생성
|
|
-- 모든 민감자원(양식장, 해수욕장, 무역항 등)을 단일 테이블로 관리
|
|
-- properties는 JSONB로 유연하게 저장
|
|
-- ============================================================
|
|
|
|
SET search_path TO wing, public;
|
|
|
|
CREATE EXTENSION IF NOT EXISTS postgis;
|
|
|
|
-- ============================================================
|
|
-- 민감자원 테이블
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS SENSITIVE_RESOURCE (
|
|
SR_ID BIGSERIAL PRIMARY KEY,
|
|
CATEGORY VARCHAR(50) NOT NULL, -- 민감자원 유형 (양식장, 해수욕장, 무역항 등)
|
|
GEOM public.geometry(Geometry, 4326) NOT NULL, -- 공간 데이터 (Point, LineString, Polygon 모두 수용)
|
|
PROPERTIES JSONB NOT NULL DEFAULT '{}', -- 원본 GeoJSON properties
|
|
REG_DT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
MOD_DT TIMESTAMP
|
|
);
|
|
|
|
-- 공간 인덱스
|
|
CREATE INDEX IF NOT EXISTS IDX_SR_GEOM ON SENSITIVE_RESOURCE USING GIST(GEOM);
|
|
|
|
-- 카테고리 인덱스 (유형별 필터링)
|
|
CREATE INDEX IF NOT EXISTS IDX_SR_CATEGORY ON SENSITIVE_RESOURCE (CATEGORY);
|
|
|
|
-- JSONB 인덱스 (properties 내부 검색용)
|
|
CREATE INDEX IF NOT EXISTS IDX_SR_PROPERTIES ON SENSITIVE_RESOURCE USING GIN(PROPERTIES);
|
|
|
|
-- 카테고리 + 공간 복합 조회 최적화
|
|
CREATE INDEX IF NOT EXISTS IDX_SR_CATEGORY_GEOM ON SENSITIVE_RESOURCE USING GIST(GEOM) WHERE CATEGORY IS NOT NULL;
|
|
|
|
COMMENT ON TABLE SENSITIVE_RESOURCE IS '민감자원 통합 테이블';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.SR_ID IS '민감자원 ID';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.CATEGORY IS '민감자원 유형 (양식장, 해수욕장, 무역항, 어항, 해안선_ESI 등)';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.GEOM IS '공간 데이터 (EPSG:4326)';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.PROPERTIES IS '원본 GeoJSON properties (JSONB)';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.REG_DT IS '등록일시';
|
|
COMMENT ON COLUMN SENSITIVE_RESOURCE.MOD_DT IS '수정일시';
|