wing-ops/database
htlee 13d6ca69e2 refactor(db): DDL 스크립트 현행화 + wing_auth→auth 스키마 문서 전면 수정
- 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>
2026-03-01 15:16:38 +09:00
..
_deprecated refactor(db): DDL 스크립트 현행화 + wing_auth→auth 스키마 문서 전면 수정 2026-03-01 15:16:38 +09:00
migration feat(phase4): Board/HNS/Prediction/Aerial/Rescue Mock → API 전환 2026-03-01 01:17:10 +09:00
schema refactor(db): DDL 스크립트 현행화 + wing_auth→auth 스키마 문서 전면 수정 2026-03-01 15:16:38 +09:00
seed refactor(db): DDL 스크립트 현행화 + wing_auth→auth 스키마 문서 전면 수정 2026-03-01 15:16:38 +09:00
README.md refactor(db): DDL 스크립트 현행화 + wing_auth→auth 스키마 문서 전면 수정 2026-03-01 15:16:38 +09:00

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