wing-ops/database/schema/08_asset_tables.sql
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

131 lines
4.8 KiB
SQL

-- WING-OPS Database Schema: Asset Management Tables
-- wing 스키마: asset_org, asset_equip, asset_contact, asset_upload_log
-- ============================================================
-- 1. 자산 기관 (asset_org)
-- ============================================================
CREATE TABLE wing.asset_org (
org_sn integer NOT NULL,
org_tp character varying(30) NOT NULL,
jrsd_nm character varying(50) NOT NULL,
area_nm character varying(30) NOT NULL,
org_nm character varying(100) NOT NULL,
addr character varying(300),
tel character varying(30),
lat numeric(9,6),
lng numeric(10,6),
pin_size character varying(5) DEFAULT 'md'::character varying,
vessel_cnt smallint DEFAULT 0,
skimmer_cnt smallint DEFAULT 0,
pump_cnt smallint DEFAULT 0,
vehicle_cnt smallint DEFAULT 0,
sprayer_cnt smallint DEFAULT 0,
total_assets smallint DEFAULT 0,
use_yn character(1) DEFAULT 'Y'::bpchar,
reg_dtm timestamp with time zone DEFAULT now(),
mdfcn_dtm timestamp with time zone,
geom public.geometry(Point, 4326),
CONSTRAINT asset_org_pkey PRIMARY KEY (org_sn),
CONSTRAINT ck_asset_org_pin CHECK (
((pin_size)::text = ANY ((ARRAY['hq'::character varying, 'lg'::character varying, 'md'::character varying])::text[]))
)
);
CREATE SEQUENCE wing.asset_org_org_sn_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE wing.asset_org_org_sn_seq OWNED BY wing.asset_org.org_sn;
ALTER TABLE ONLY wing.asset_org ALTER COLUMN org_sn SET DEFAULT nextval('wing.asset_org_org_sn_seq'::regclass);
-- ============================================================
-- 2. 자산 장비 (asset_equip)
-- ============================================================
CREATE TABLE wing.asset_equip (
equip_sn integer NOT NULL,
org_sn integer NOT NULL,
ctgr_nm character varying(50) NOT NULL,
icon character varying(10),
qty smallint DEFAULT 0,
sort_ord smallint DEFAULT 0,
CONSTRAINT asset_equip_pkey PRIMARY KEY (equip_sn),
CONSTRAINT asset_equip_org_sn_ctgr_nm_key UNIQUE (org_sn, ctgr_nm)
);
CREATE SEQUENCE wing.asset_equip_equip_sn_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE wing.asset_equip_equip_sn_seq OWNED BY wing.asset_equip.equip_sn;
ALTER TABLE ONLY wing.asset_equip ALTER COLUMN equip_sn SET DEFAULT nextval('wing.asset_equip_equip_sn_seq'::regclass);
-- ============================================================
-- 3. 자산 연락처 (asset_contact)
-- ============================================================
CREATE TABLE wing.asset_contact (
contact_sn integer NOT NULL,
org_sn integer NOT NULL,
role_nm character varying(50),
contact_nm character varying(50),
tel character varying(30),
sort_ord smallint DEFAULT 0,
CONSTRAINT asset_contact_pkey PRIMARY KEY (contact_sn)
);
CREATE SEQUENCE wing.asset_contact_contact_sn_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE wing.asset_contact_contact_sn_seq OWNED BY wing.asset_contact.contact_sn;
ALTER TABLE ONLY wing.asset_contact ALTER COLUMN contact_sn SET DEFAULT nextval('wing.asset_contact_contact_sn_seq'::regclass);
-- ============================================================
-- 4. 자산 업로드 로그 (asset_upload_log)
-- ============================================================
CREATE TABLE wing.asset_upload_log (
log_sn integer NOT NULL,
file_nm character varying(200) NOT NULL,
uploader_nm character varying(50),
upload_cnt integer DEFAULT 0,
reg_dtm timestamp with time zone DEFAULT now(),
CONSTRAINT asset_upload_log_pkey PRIMARY KEY (log_sn)
);
CREATE SEQUENCE wing.asset_upload_log_log_sn_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE wing.asset_upload_log_log_sn_seq OWNED BY wing.asset_upload_log.log_sn;
ALTER TABLE ONLY wing.asset_upload_log ALTER COLUMN log_sn SET DEFAULT nextval('wing.asset_upload_log_log_sn_seq'::regclass);
-- ============================================================
-- FK 제약조건
-- ============================================================
ALTER TABLE ONLY wing.asset_equip
ADD CONSTRAINT asset_equip_org_sn_fkey
FOREIGN KEY (org_sn) REFERENCES wing.asset_org(org_sn) ON DELETE CASCADE;
ALTER TABLE ONLY wing.asset_contact
ADD CONSTRAINT asset_contact_org_sn_fkey
FOREIGN KEY (org_sn) REFERENCES wing.asset_org(org_sn) ON DELETE CASCADE;