-- ## ver 0.0.3 last update data : 2025.05.22 -- ## Only for PostgreSQL -- ## Designing for KOSIS OpenAPI Data (연동 규격을 기준으로 ) -- ################################################ -- ## 수집된 통계 데이터 원본 저장용 테이블 생성 -- ################################################ DROP TABLE IF EXISTS public.stats_kosis_origin_data; CREATE TABLE stats_kosis_origin_data ( id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가) org_id int2 NOT NULL, -- 기관코드 tbl_id VARCHAR(40) NOT NULL, -- 통계표ID tbl_nm VARCHAR(300) NOT NULL, -- 통계표명 c1 VARCHAR(24) NOT NULL, c2 VARCHAR(24), c3 VARCHAR(24), c4 VARCHAR(24), -- 분류값 ID1 ~ 4, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류' c1_obj_nm VARCHAR(300) NOT NULL, c2_obj_nm VARCHAR(300), c3_obj_nm VARCHAR(300), c4_obj_nm VARCHAR(300), -- 분류명1 ~ 4 c1_nm VARCHAR(300) NOT NULL, c2_nm VARCHAR(300), c3_nm VARCHAR(300), c4_nm VARCHAR(300), -- 분류값 명1 ~ 4 itm_id VARCHAR(10) NOT NULL, -- 항목 ID itm_nm VARCHAR(300) NOT NULL, -- 항목명 unit_id VARCHAR(4), -- 단위ID unit_nm VARCHAR(20), -- 단위명 prd_se VARCHAR(2) NOT NULL, -- 수록주기 prd_de VARCHAR(10) NOT NULL, -- 수록시점 dt varchar(100) NOT NULL, -- 수치 값 lst_chn_de VARCHAR(10), -- 최종수정일 created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 생성 일시 CONSTRAINT pkey_stats_kosis_origin_data PRIMARY KEY (id) ); CREATE INDEX idx_st_kosis_origin_data_org_tlb_id ON stats_kosis_origin_data USING btree (org_id,tbl_id); COMMENT ON TABLE stats_src_data_info IS 'KOSIS 원천 통계 데이터'; -- 필드별 COMMENT 추가 COMMENT ON COLUMN stats_kosis_origin_data.id IS 'system id, 고유 식별자 (자동 증가)'; COMMENT ON COLUMN stats_kosis_origin_data.org_id IS '기관 코드'; COMMENT ON COLUMN stats_kosis_origin_data.tbl_id IS '통계표 ID'; COMMENT ON COLUMN stats_kosis_origin_data.tbl_nm IS '통계표명'; COMMENT ON COLUMN stats_kosis_origin_data.c1 IS '분류값 ID1, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c2 IS '분류값 ID2, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c3 IS '분류값 ID3, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c4 IS '분류값 ID4, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c1_obj_nm IS '분류명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_obj_nm IS '분류명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_obj_nm IS '분류명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_obj_nm IS '분류명4'; COMMENT ON COLUMN stats_kosis_origin_data.c1_nm IS '분류값 명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_nm IS '분류값 명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_nm IS '분류값 명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_nm IS '분류값 명4'; COMMENT ON COLUMN stats_kosis_origin_data.itm_id IS '항목 ID'; COMMENT ON COLUMN stats_kosis_origin_data.itm_nm IS '항목명'; COMMENT ON COLUMN stats_kosis_origin_data.unit_id IS '단위 ID'; COMMENT ON COLUMN stats_kosis_origin_data.unit_nm IS '단위명'; COMMENT ON COLUMN stats_kosis_origin_data.prd_se IS '수록주기'; COMMENT ON COLUMN stats_kosis_origin_data.prd_de IS '수록시점'; COMMENT ON COLUMN stats_kosis_origin_data.dt IS '수치 값'; COMMENT ON COLUMN stats_kosis_origin_data.lst_chn_de IS '최종 수정일'; COMMENT ON COLUMN stats_kosis_origin_data.created_at IS '생성 일시'; -- ################################################ -- ## 수집된 통계 데이터의 분류/항목 정보 원본 저장용 테이블 생성 -- ################################################ CREATE TABLE kosis_item_meta_code ( id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가) obj_id VARCHAR(24) NOT NULL, obj_nm VARCHAR(300) NOT NULL, itm_id VARCHAR(24) NOT NULL, itm_nm VARCHAR(300) NOT NULL, up_itm_id VARCHAR(40), obj_id_sn SMALLINT, unit_id VARCHAR(4), unit_nm VARCHAR(20), created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, updated_at timestamptz DEFAULT CURRENT_TIMESTAMP, created_by VARCHAR(50), updated_by VARCHAR(50), CONSTRAINT pkey_kosis_item_meta_code PRIMARY KEY (id) ); CREATE UNIQUE INDEX uidx_kosis_item_meta_code_obj_itm_id ON kosis_item_meta_code USING btree (obj_id, itm_id ); COMMENT ON TABLE kosis_item_meta_code IS 'KOSIS 원천 데이터 의 분류/항목 코드 정보'; COMMENT ON COLUMN kosis_item_meta_code.id IS 'PK: 내부 고유 ID (자동 생성)'; COMMENT ON COLUMN kosis_item_meta_code.obj_id IS '분류 ID'; COMMENT ON COLUMN kosis_item_meta_code.obj_nm IS '분류명 (한글)'; ; COMMENT ON COLUMN kosis_item_meta_code.itm_id IS '자료코드 ID'; COMMENT ON COLUMN kosis_item_meta_code.itm_nm IS '자료코드명 (한글)'; COMMENT ON COLUMN kosis_item_meta_code.up_itm_id IS '상위 자료코드 ID'; COMMENT ON COLUMN kosis_item_meta_code.obj_id_sn IS '분류값 순번'; COMMENT ON COLUMN kosis_item_meta_code.unit_id IS '단위 ID'; COMMENT ON COLUMN kosis_item_meta_code.unit_nm IS '단위명 (한글)'; COMMENT ON COLUMN kosis_item_meta_code.created_at IS '생성 일시'; COMMENT ON COLUMN kosis_item_meta_code.created_by IS '생성자'; COMMENT ON COLUMN kosis_item_meta_code.updated_at IS '최종 수정 일시'; COMMENT ON COLUMN kosis_item_meta_code.updated_by IS '최종 수정자'; /* ORG Table ------------------------------------------------------------- -- ################################################ -- ## 수집된 통계 데이터 원본 저장용 테이블 생성 -- ################################################ CREATE TABLE stats_kosis_origin_data ( id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가) org_id VARCHAR(40) NOT NULL, -- 기관코드 tbl_id VARCHAR(40) NOT NULL, -- 통계표ID tbl_nm VARCHAR(300) NOT NULL, -- 통계표명 c1 VARCHAR(40) NOT NULL, c2 VARCHAR(40), c3 VARCHAR(40), c4 VARCHAR(40), -- 분류값 ID1 ~ 4 , 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류' c5 VARCHAR(40), c6 VARCHAR(40), c7 VARCHAR(40), c8 VARCHAR(40), -- 분류값 ID5 ~ 8, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류' c1_obj_nm VARCHAR(3000) NOT NULL, c2_obj_nm VARCHAR(3000), c3_obj_nm VARCHAR(3000), c4_obj_nm VARCHAR(3000), -- 분류명1 ~ 4 c5_obj_nm VARCHAR(3000), c6_obj_nm VARCHAR(3000), c7_obj_nm VARCHAR(3000), c8_obj_nm VARCHAR(3000), -- 분류명5 ~ 8 c1_obj_nm_eng VARCHAR(3000), c2_obj_nm_eng VARCHAR(3000), c3_obj_nm_eng VARCHAR(3000), c4_obj_nm_eng VARCHAR(3000), -- 분류 영문명1 ~ 4 c5_obj_nm_eng VARCHAR(3000), c6_obj_nm_eng VARCHAR(3000), c7_obj_nm_eng VARCHAR(3000), c8_obj_nm_eng VARCHAR(3000), -- 분류 영문명5 ~ 8 c1_nm VARCHAR(3000) NOT NULL, c2_nm VARCHAR(3000), c3_nm VARCHAR(3000), c4_nm VARCHAR(3000), -- 분류값 명1 ~ 4 c5_nm VARCHAR(3000), c6_nm VARCHAR(3000), c7_nm VARCHAR(3000), c8_nm VARCHAR(3000), -- 분류값 명5 ~ 8 c1_nm_eng VARCHAR(3000), c2_nm_eng VARCHAR(3000), c3_nm_eng VARCHAR(3000), c4_nm_eng VARCHAR(3000), -- 분류값 영문명1 ~ 4 c5_nm_eng VARCHAR(3000), c6_nm_eng VARCHAR(3000), c7_nm_eng VARCHAR(3000), c8_nm_eng VARCHAR(3000), -- 분류값 영문명5 ~ 8 itm_id VARCHAR(40) NOT NULL, -- 항목 ID itm_nm VARCHAR(3000) NOT NULL, -- 항목명 itm_nm_eng VARCHAR(3000), -- 항목영문명 unit_id VARCHAR(40), -- 단위ID unit_nm VARCHAR(1000), -- 단위명 unit_nm_eng VARCHAR(1000), -- 단위영문명 prd_se VARCHAR(20) NOT NULL, -- 수록주기 prd_de VARCHAR(40) NOT NULL, -- 수록시점 dt VARCHAR(100) DEFAULT null, -- 수치 값 lst_chn_de VARCHAR(20), -- 최종수정일 created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 생성 일시 CONSTRAINT pkey_stats_kosis_origin_data PRIMARY KEY (id) ); CREATE INDEX idx_st_kosis_origin_data_org_tlb_id ON stats_kosis_origin_data USING btree (org_id,tbl_id); COMMENT ON TABLE stats_src_data_info IS 'KOSIS 원천 통계 데이터'; -- 필드별 COMMENT 추가 COMMENT ON COLUMN stats_kosis_origin_data.id IS 'system id, 고유 식별자 (자동 증가)'; COMMENT ON COLUMN stats_kosis_origin_data.org_id IS '기관 코드'; COMMENT ON COLUMN stats_kosis_origin_data.tbl_id IS '통계표 ID'; COMMENT ON COLUMN stats_kosis_origin_data.tbl_nm IS '통계표명'; COMMENT ON COLUMN stats_kosis_origin_data.c1 IS '분류값 ID1, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c2 IS '분류값 ID2, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c3 IS '분류값 ID3, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c4 IS '분류값 ID4, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c5 IS '분류값 ID5, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c6 IS '분류값 ID6, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c7 IS '분류값 ID7, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c8 IS '분류값 ID8, 값>3자일 일경우 앞3자리로 group id를 찾아 표시해야함. c#_obj하위에 group임. c#_obj > c# group > c#, itm_id는 별도 분류'; COMMENT ON COLUMN stats_kosis_origin_data.c1_obj_nm IS '분류명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_obj_nm IS '분류명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_obj_nm IS '분류명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_obj_nm IS '분류명4'; COMMENT ON COLUMN stats_kosis_origin_data.c5_obj_nm IS '분류명5'; COMMENT ON COLUMN stats_kosis_origin_data.c6_obj_nm IS '분류명6'; COMMENT ON COLUMN stats_kosis_origin_data.c7_obj_nm IS '분류명7'; COMMENT ON COLUMN stats_kosis_origin_data.c8_obj_nm IS '분류명8'; COMMENT ON COLUMN stats_kosis_origin_data.c1_obj_nm_eng IS '분류 영문명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_obj_nm_eng IS '분류 영문명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_obj_nm_eng IS '분류 영문명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_obj_nm_eng IS '분류 영문명4'; COMMENT ON COLUMN stats_kosis_origin_data.c5_obj_nm_eng IS '분류 영문명5'; COMMENT ON COLUMN stats_kosis_origin_data.c6_obj_nm_eng IS '분류 영문명6'; COMMENT ON COLUMN stats_kosis_origin_data.c7_obj_nm_eng IS '분류 영문명7'; COMMENT ON COLUMN stats_kosis_origin_data.c8_obj_nm_eng IS '분류 영문명8'; COMMENT ON COLUMN stats_kosis_origin_data.c1_nm IS '분류값 명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_nm IS '분류값 명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_nm IS '분류값 명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_nm IS '분류값 명4'; COMMENT ON COLUMN stats_kosis_origin_data.c5_nm IS '분류값 명5'; COMMENT ON COLUMN stats_kosis_origin_data.c6_nm IS '분류값 명6'; COMMENT ON COLUMN stats_kosis_origin_data.c7_nm IS '분류값 명7'; COMMENT ON COLUMN stats_kosis_origin_data.c8_nm IS '분류값 명8'; COMMENT ON COLUMN stats_kosis_origin_data.c1_nm_eng IS '분류값 영문명1'; COMMENT ON COLUMN stats_kosis_origin_data.c2_nm_eng IS '분류값 영문명2'; COMMENT ON COLUMN stats_kosis_origin_data.c3_nm_eng IS '분류값 영문명3'; COMMENT ON COLUMN stats_kosis_origin_data.c4_nm_eng IS '분류값 영문명4'; COMMENT ON COLUMN stats_kosis_origin_data.c5_nm_eng IS '분류값 영문명5'; COMMENT ON COLUMN stats_kosis_origin_data.c6_nm_eng IS '분류값 영문명6'; COMMENT ON COLUMN stats_kosis_origin_data.c7_nm_eng IS '분류값 영문명7'; COMMENT ON COLUMN stats_kosis_origin_data.c8_nm_eng IS '분류값 영문명8'; COMMENT ON COLUMN stats_kosis_origin_data.itm_id IS '항목 ID'; COMMENT ON COLUMN stats_kosis_origin_data.itm_nm IS '항목명'; COMMENT ON COLUMN stats_kosis_origin_data.itm_nm_eng IS '항목영문명'; COMMENT ON COLUMN stats_kosis_origin_data.unit_id IS '단위 ID'; COMMENT ON COLUMN stats_kosis_origin_data.unit_nm IS '단위명'; COMMENT ON COLUMN stats_kosis_origin_data.unit_nm_eng IS '단위 영문명'; COMMENT ON COLUMN stats_kosis_origin_data.prd_se IS '수록주기'; COMMENT ON COLUMN stats_kosis_origin_data.prd_de IS '수록시점'; COMMENT ON COLUMN stats_kosis_origin_data.dt IS '수치 값'; COMMENT ON COLUMN stats_kosis_origin_data.lst_chn_de IS '최종 수정일'; COMMENT ON COLUMN stats_kosis_origin_data.created_at IS '생성 일시'; -- ################################################ -- ## 수집된 통계 데이터의 분류/항목 정보 원본 저장용 테이블 생성 -- ################################################ CREATE TABLE kosis_item_meta_code ( id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가) obj_id VARCHAR(40) NOT NULL, obj_nm VARCHAR(300) NOT NULL, obj_nm_eng VARCHAR(300), itm_id VARCHAR(40) NOT NULL, itm_nm VARCHAR(500) NOT NULL, itm_nm_eng VARCHAR(500), up_itm_id VARCHAR(40), obj_id_sn SMALLINT, unit_id VARCHAR(40), unit_nm VARCHAR(100), unit_eng_nm VARCHAR(100), created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 생성 일시 created_by VARCHAR(50), updated_at TIMESTAMP, updated_by VARCHAR(50), CONSTRAINT pkey_kosis_item_meta_code PRIMARY KEY (id) ); CREATE UNIQUE INDEX uidx_kosis_item_meta_code_obj_itm_id ON kosis_item_meta_code USING btree (obj_id, itm_id ); COMMENT ON TABLE kosis_item_meta_code IS 'KOSIS OpenAPI 연동용 분류/항목/단위 코드 테이블'; COMMENT ON COLUMN kosis_item_meta_code.id IS 'PK: 내부 고유 ID (자동 생성)'; COMMENT ON COLUMN kosis_item_meta_code.obj_id IS '분류 ID'; COMMENT ON COLUMN kosis_item_meta_code.obj_nm IS '분류명 (한글)'; COMMENT ON COLUMN kosis_item_meta_code.obj_nm_eng IS '분류명 (영문)'; COMMENT ON COLUMN kosis_item_meta_code.itm_id IS '자료코드 ID'; COMMENT ON COLUMN kosis_item_meta_code.itm_nm IS '자료코드명 (한글)'; COMMENT ON COLUMN kosis_item_meta_code.itm_nm_eng IS '자료코드명 (영문)'; COMMENT ON COLUMN kosis_item_meta_code.up_itm_id IS '상위 자료코드 ID'; COMMENT ON COLUMN kosis_item_meta_code.obj_id_sn IS '분류값 순번'; COMMENT ON COLUMN kosis_item_meta_code.unit_id IS '단위 ID'; COMMENT ON COLUMN kosis_item_meta_code.unit_nm IS '단위명 (한글)'; COMMENT ON COLUMN kosis_item_meta_code.unit_eng_nm IS '단위명 (영문)'; COMMENT ON COLUMN kosis_item_meta_code.created_at IS '생성 일시'; COMMENT ON COLUMN kosis_item_meta_code.created_by IS '생성자'; COMMENT ON COLUMN kosis_item_meta_code.updated_at IS '최종 수정 일시'; COMMENT ON COLUMN kosis_item_meta_code.updated_by IS '최종 수정자'; ---------------------------------------------------------------------- */