WING-OPS Database
아키텍처
wing 단일 DB에 3개 스키마로 구성. search_path = wing, auth, public 설정으로 스키마 접두사 없이 쿼리 가능.
wing (database)
├── public PostGIS 확장 (geometry, geography, spatial_ref_sys)
├── auth 인증/권한 (9 테이블)
└── wing 운영 데이터 (35+ 테이블)
| 스키마 |
역할 |
주요 테이블 |
| public |
PostGIS 공간 함수, pg_trgm, uuid-ossp |
(확장 전용) |
| auth |
사용자 인증, 역할, 권한, 감사로그 |
auth_user, auth_role, auth_perm, auth_perm_tree, auth_audit_log |
| wing |
사고, 확산예측, HNS, SCAT, 자산, 게시판, 보고서 |
acdnt, pred_exec, hns_substance, cst_sect, asset_org, board_post, report |
초기 설치
# 1. DB 생성 + 사용자
createdb -U postgres wing
psql -U postgres -c "CREATE USER wing WITH PASSWORD 'Wing2026';"
psql -U postgres -c "GRANT ALL ON DATABASE wing TO wing;"
# 2. 스키마 DDL 실행 (순서대로)
for f in database/schema/0*.sql database/schema/1*.sql; do
psql -U wing -d wing -f "$f"
done
# 3. Seed 데이터 (SQL)
for f in database/seed/0[1-8]*.sql database/seed/1[1-4]*.sql; do
psql -U wing -d wing -f "$f"
done
# 4. Seed 데이터 (Node.js — layer 160건, HNS 1,316건)
cd backend && npm run db:seed
디렉토리 구조
database/
├── schema/ ERD용 순수 DDL (현행 운영 DB 기준)
│ ├── 00_extensions.sql 확장 + 스키마 생성
│ ├── 01_auth_tables.sql auth 스키마 (9 테이블)
│ ├── 02_common_tables.sql 공통코드, 레이어
│ ├── 03_org_user_tables.sql 조직, 사용자
│ ├── 04_accident_tables.sql 사고, 유출, 예측, 기상, 미디어
│ ├── 05_hns_tables.sql HNS 물질, 분석
│ ├── 06_scat_tables.sql 해안조사 구역, 구간
│ ├── 07_boom_backtrack_tables.sql 오일붐, 역추적, 선박
│ ├── 08_asset_tables.sql 자산 기관, 장비, 연락처
│ ├── 09_board_manual_tables.sql 게시판, 매뉴얼
│ ├── 10_report_tables.sql 보고서, 템플릿, 분석카테고리
│ ├── 11_aerial_rescue_tables.sql 항공, CCTV, 위성, 구조
│ ├── 12_incidents_tables.sql 사건사고
│ └── 13_indexes.sql 인덱스 (GiST, GIN, btree)
├── seed/ 초기 데이터 (INSERT)
│ ├── 01~06 auth 스키마 seed
│ ├── 07~08 공통코드, 조직
│ ├── 09~10 참조 안내 (Node.js seed)
│ ├── 11~14 샘플 데이터
│ └── README.md 실행 순서 안내
├── migration/ 증분 마이그레이션 (001~016)
└── _deprecated/ 구 스크립트 (통합 이전 버전)
├── init.sql 구 wing DB 초기 스키마
└── auth_init.sql 구 wing_auth DB 초기 스키마
마이그레이션 규칙
- 번호 체계:
NNN_설명.sql (예: 017_add_feature.sql)
- DDL(CREATE/ALTER)과 seed(INSERT)를 분리
- DDL만 포함하는 파일:
NNN_설명.sql
- seed만 포함하는 파일:
NNN_설명_seed.sql
- 새 테이블 추가 시
schema/ 파일도 함께 업데이트
PostGIS 컬럼
| 테이블 |
컬럼 |
타입 |
인덱스 |
| acdnt |
loc_geom |
Point, 4326 |
GiST |
| aerial_media |
geom |
Point, 4326 |
GiST |
| asset_org |
geom |
Point, 4326 |
GiST |
| backtrack |
geom |
Point, 4326 |
GiST |
| boom_line |
geom |
LineString, 4326 |
GiST |
| cctv_camera |
geom |
Point, 4326 |
GiST |
| cst_sect |
geom |
Point, 4326 |
GiST |
| cst_srvy_zone |
geom |
Point, 4326 |
GiST |
| hns_analysis |
geom |
Point, 4326 |
- |
| rescue_ops |
geom |
Point, 4326 |
GiST |
| sat_request |
geom |
Point, 4326 |
GiST |
접속 정보
| 항목 |
값 |
| Host |
211.208.115.83 |
| Port |
5432 |
| Database |
wing |
| User |
wing |
| Schema |
wing, auth, public |
| search_path |
wing, auth, public |