- database/schema/ 14개 DDL 파일 신규 생성 (운영 DB pg_dump 기반) - database/seed/ 14개 초기 데이터 파일 분리 - database/_deprecated/로 구 init.sql, auth_init.sql 이동 - database/README.md 신규 작성 (DB 아키텍처, 설치 절차) - docs/ 6개 가이드 문서 wing_auth→auth 스키마 구조로 수정 - README.md, CLAUDE.md wing 단일 DB 구조 반영 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
136 lines
6.1 KiB
SQL
136 lines
6.1 KiB
SQL
-- WING-OPS Database Schema: Additional Indexes
|
|
-- 01~12 파일의 PK/UNIQUE 제약조건을 제외한 추가 인덱스 모음
|
|
-- (CREATE INDEX 만 포함, ALTER TABLE ... ADD CONSTRAINT 형태의 UNIQUE는 각 테이블 파일에 포함)
|
|
|
|
-- ============================================================
|
|
-- auth 스키마 인덱스
|
|
-- ============================================================
|
|
|
|
-- auth_audit_log
|
|
CREATE INDEX idx_audit_log_action ON auth.auth_audit_log USING btree (action_cd);
|
|
CREATE INDEX idx_audit_log_dtm ON auth.auth_audit_log USING btree (req_dtm);
|
|
CREATE INDEX idx_audit_log_user ON auth.auth_audit_log USING btree (user_id);
|
|
|
|
-- auth_login_hist
|
|
CREATE INDEX idx_auth_login_dtm ON auth.auth_login_hist USING btree (login_dtm);
|
|
CREATE INDEX idx_auth_login_user ON auth.auth_login_hist USING btree (user_id);
|
|
|
|
-- auth_perm
|
|
CREATE INDEX idx_auth_perm_oper ON auth.auth_perm USING btree (oper_cd);
|
|
CREATE INDEX idx_auth_perm_role ON auth.auth_perm USING btree (role_sn);
|
|
CREATE INDEX idx_auth_perm_rsrc ON auth.auth_perm USING btree (rsrc_cd);
|
|
|
|
-- auth_user
|
|
CREATE INDEX idx_auth_user_org ON auth.auth_user USING btree (org_sn);
|
|
CREATE INDEX idx_auth_user_stts ON auth.auth_user USING btree (user_stts_cd);
|
|
|
|
-- auth_perm_tree
|
|
CREATE INDEX idx_perm_tree_parent ON auth.auth_perm_tree USING btree (parent_cd);
|
|
|
|
-- auth_user — 부분 유니크 인덱스 (조건부)
|
|
CREATE UNIQUE INDEX uk_auth_user_email ON auth.auth_user USING btree (email)
|
|
WHERE (email IS NOT NULL);
|
|
|
|
CREATE UNIQUE INDEX uk_auth_user_oauth ON auth.auth_user USING btree (oauth_provider, oauth_sub)
|
|
WHERE (oauth_provider IS NOT NULL);
|
|
|
|
|
|
-- ============================================================
|
|
-- wing 스키마 인덱스 — GiST 공간 인덱스
|
|
-- ============================================================
|
|
CREATE INDEX idx_acdnt_loc_geom ON wing.acdnt USING gist (loc_geom);
|
|
CREATE INDEX idx_aerial_media_geom ON wing.aerial_media USING gist (geom);
|
|
CREATE INDEX idx_asset_org_geom ON wing.asset_org USING gist (geom);
|
|
CREATE INDEX idx_backtrack_geom ON wing.backtrack USING gist (geom);
|
|
CREATE INDEX idx_boom_geom ON wing.boom_line USING gist (geom);
|
|
CREATE INDEX idx_cctv_geom ON wing.cctv_camera USING gist (geom);
|
|
CREATE INDEX idx_cst_sect_geom ON wing.cst_sect USING gist (geom);
|
|
CREATE INDEX idx_cst_srvy_zone_geom ON wing.cst_srvy_zone USING gist (geom);
|
|
CREATE INDEX idx_rescue_ops_geom ON wing.rescue_ops USING gist (geom);
|
|
CREATE INDEX idx_sat_req_geom ON wing.sat_request USING gist (geom);
|
|
|
|
|
|
-- ============================================================
|
|
-- wing 스키마 인덱스 — GIN (전문검색 / jsonb)
|
|
-- ============================================================
|
|
CREATE INDEX idx_hns_sbst_abbr ON wing.hns_substance USING gin (abbreviation public.gin_trgm_ops);
|
|
CREATE INDEX idx_hns_sbst_nm_en ON wing.hns_substance USING gin (nm_en public.gin_trgm_ops);
|
|
CREATE INDEX idx_hns_sbst_nm_kr ON wing.hns_substance USING gin (nm_kr public.gin_trgm_ops);
|
|
CREATE INDEX idx_hns_sbst_data ON wing.hns_substance USING gin (data jsonb_path_ops);
|
|
|
|
|
|
-- ============================================================
|
|
-- wing 스키마 인덱스 — btree
|
|
-- ============================================================
|
|
|
|
-- acdnt
|
|
CREATE INDEX idx_acdnt_occrn ON wing.acdnt USING btree (occrn_dtm DESC);
|
|
CREATE INDEX idx_acdnt_region ON wing.acdnt USING btree (region_nm);
|
|
CREATE INDEX idx_acdnt_stts ON wing.acdnt USING btree (acdnt_stts_cd);
|
|
|
|
-- aerial_media
|
|
CREATE INDEX idx_aerial_media_acdnt ON wing.aerial_media USING btree (acdnt_sn);
|
|
|
|
-- asset_org
|
|
CREATE INDEX idx_asset_org_jrsd ON wing.asset_org USING btree (jrsd_nm);
|
|
CREATE INDEX idx_asset_org_tp ON wing.asset_org USING btree (org_tp);
|
|
|
|
-- asset_equip / asset_contact
|
|
CREATE INDEX idx_asset_equip_org ON wing.asset_equip USING btree (org_sn);
|
|
CREATE INDEX idx_asset_contact_org ON wing.asset_contact USING btree (org_sn);
|
|
|
|
-- backtrack
|
|
CREATE INDEX idx_backtrack_acdnt ON wing.backtrack USING btree (acdnt_sn);
|
|
|
|
-- board_post
|
|
CREATE INDEX idx_board_author ON wing.board_post USING btree (author_id);
|
|
CREATE INDEX idx_board_category ON wing.board_post USING btree (category_cd);
|
|
CREATE INDEX idx_board_reg_dtm ON wing.board_post USING btree (reg_dtm DESC);
|
|
|
|
-- boom_line
|
|
CREATE INDEX idx_boom_acdnt ON wing.boom_line USING btree (acdnt_sn);
|
|
|
|
-- cst_sect
|
|
CREATE INDEX idx_cst_sect_esi ON wing.cst_sect USING btree (esi_num);
|
|
CREATE INDEX idx_cst_sect_stts ON wing.cst_sect USING btree (srvy_stts_cd);
|
|
CREATE INDEX idx_cst_sect_zone ON wing.cst_sect USING btree (cst_srvy_zone_sn);
|
|
|
|
-- hns_substance (btree)
|
|
CREATE INDEX idx_hns_sbst_cas ON wing.hns_substance USING btree (cas_no);
|
|
CREATE INDEX idx_hns_sbst_sebc ON wing.hns_substance USING btree (sebc);
|
|
CREATE INDEX idx_hns_sbst_un ON wing.hns_substance USING btree (un_no);
|
|
|
|
-- layer
|
|
CREATE INDEX idx_layer_level ON wing.layer USING btree (layer_level);
|
|
CREATE INDEX idx_layer_up ON wing.layer USING btree (up_layer_cd);
|
|
CREATE INDEX idx_layer_use ON wing.layer USING btree (use_yn);
|
|
|
|
-- acdnt_media
|
|
CREATE INDEX idx_media_acdnt ON wing.acdnt_media USING btree (acdnt_sn);
|
|
|
|
-- pred_exec
|
|
CREATE INDEX idx_pred_acdnt ON wing.pred_exec USING btree (acdnt_sn);
|
|
|
|
-- report
|
|
CREATE INDEX idx_report_author ON wing.report USING btree (author_id);
|
|
CREATE INDEX idx_report_ctgr ON wing.report USING btree (ctgr_sn);
|
|
CREATE INDEX idx_report_reg_dtm ON wing.report USING btree (reg_dtm DESC);
|
|
CREATE INDEX idx_report_stts ON wing.report USING btree (stts_cd);
|
|
CREATE INDEX idx_report_tmpl ON wing.report USING btree (tmpl_sn);
|
|
|
|
-- report_sect_data
|
|
CREATE INDEX idx_report_sect_report ON wing.report_sect_data USING btree (report_sn);
|
|
|
|
-- rescue_ops / rescue_scenario
|
|
CREATE INDEX idx_rescue_ops_acdnt ON wing.rescue_ops USING btree (acdnt_sn);
|
|
CREATE INDEX idx_rescue_scenario_ops ON wing.rescue_scenario USING btree (rescue_ops_sn);
|
|
|
|
-- spil_data
|
|
CREATE INDEX idx_spil_acdnt ON wing.spil_data USING btree (acdnt_sn);
|
|
|
|
-- vessel_info
|
|
CREATE INDEX idx_vessel_acdnt ON wing.vessel_info USING btree (acdnt_sn);
|
|
|
|
-- acdnt_weather
|
|
CREATE INDEX idx_weather_acdnt ON wing.acdnt_weather USING btree (acdnt_sn);
|