-- PostgreSQL Schema for incheon
-- Converted from HSQL memory tables
-- Using iccom schema

-- 스키마 설정

-- 기존 전자정부 프레임워크 테이블들
CREATE TABLE iccom.TCCMMNCLCODE (
                                          CL_CODE VARCHAR(3) NOT NULL PRIMARY KEY,
                                          CL_CODE_NM VARCHAR(60),
                                          CL_CODE_DC VARCHAR(200),
                                          USE_AT VARCHAR(1),
                                          FRST_REGIST_PNTTM TIMESTAMP,
                                          FRST_REG_ID VARCHAR(20),
                                          LAST_UPDT_PNTTM TIMESTAMP,
                                          LAST_UPDUSR_ID VARCHAR(20)
);

CREATE TABLE iccom.TCCMMNCODE (
                                        CODE_ID VARCHAR(6) NOT NULL PRIMARY KEY,
                                        CODE_ID_NM VARCHAR(60),
                                        CODE_ID_DC VARCHAR(200),
                                        USE_AT VARCHAR(1),
                                        CL_CODE VARCHAR(3),
                                        FRST_REGIST_PNTTM TIMESTAMP,
                                        FRST_REG_ID VARCHAR(20),
                                        LAST_UPDT_PNTTM TIMESTAMP,
                                        LAST_UPDUSR_ID VARCHAR(20),
                                        CONSTRAINT SYS_FK_86 FOREIGN KEY(CL_CODE) REFERENCES TCCMMNCLCODE(CL_CODE)
);

CREATE TABLE iccom.TCCMMNDETAILCODE (
                                              CODE_ID VARCHAR(6) NOT NULL,
                                              CODE VARCHAR(15) NOT NULL,
                                              CODE_NM VARCHAR(60),
                                              CODE_DC VARCHAR(200),
                                              USE_AT VARCHAR(1),
                                              FRST_REGIST_PNTTM TIMESTAMP,
                                              FRST_REG_ID VARCHAR(20),
                                              LAST_UPDT_PNTTM TIMESTAMP,
                                              LAST_UPDUSR_ID VARCHAR(20),
                                              PRIMARY KEY(CODE_ID, CODE),
                                              CONSTRAINT SYS_FK_89 FOREIGN KEY(CODE_ID) REFERENCES TCCMMNCODE(CODE_ID)
);

CREATE TABLE iccom.TNAUTHORGROUPINFO (
                                               GROUP_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                               GROUP_NM VARCHAR(60) NOT NULL,
                                               GROUP_CREAT_DE VARCHAR(20) NOT NULL,
                                               GROUP_DC VARCHAR(100)
);

CREATE TABLE iccom.TNAUTHORINFO (
                                          AUTHOR_CODE VARCHAR(30) NOT NULL PRIMARY KEY,
                                          AUTHOR_NM VARCHAR(60) NOT NULL,
                                          AUTHOR_DC VARCHAR(200),
                                          AUTHOR_CREAT_DE VARCHAR(20) NOT NULL
);

CREATE TABLE iccom.TNORGNZTINFO (
                                          ORGNZT_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                          ORGNZT_NM VARCHAR(20) NOT NULL,
                                          ORGNZT_DC VARCHAR(100)
);

CREATE TABLE iccom.TNBBSMASTER (
                                         BBS_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                         BBS_NM VARCHAR(255) NOT NULL,
                                         BBS_INTRCN VARCHAR(2400),
                                         BBS_TY_CODE VARCHAR(6) NOT NULL,
                                         BBS_ATTRB_CODE VARCHAR(6) NOT NULL,
                                         REPLY_POSBL_AT VARCHAR(1),
                                         FILE_ATCH_POSBL_AT VARCHAR(1) NOT NULL,
                                         ATCH_POSBL_FILE_NUMBER NUMERIC(2) NOT NULL,
                                         ATCH_POSBL_FILE_SIZE NUMERIC(8),
                                         USE_AT VARCHAR(1) NOT NULL,
                                         TMPLAT_ID VARCHAR(20),
                                         FRST_REG_ID VARCHAR(20) NOT NULL,
                                         FRST_REGIST_PNTTM TIMESTAMP NOT NULL,
                                         LAST_UPDUSR_ID VARCHAR(20),
                                         LAST_UPDT_PNTTM TIMESTAMP
);

CREATE TABLE iccom.TNBBS (
                                   NTT_ID BIGINT NOT NULL,
                                   BBS_ID VARCHAR(20) NOT NULL,
                                   NTT_NO BIGINT,
                                   NTT_SJ VARCHAR(2000),
                                   NTT_CN TEXT,  -- LONGVARCHAR → TEXT
                                   ANSWER_AT VARCHAR(1),
                                   PARNTSCTT_NO NUMERIC(10),
                                   ANSWER_LC INTEGER,
                                   SORT_ORDR NUMERIC(8),
                                   RDCNT NUMERIC(10),
                                   USE_AT VARCHAR(1) NOT NULL,
                                   NTCE_BGNDE VARCHAR(20),
                                   NTCE_ENDDE VARCHAR(20),
                                   NTCR_ID VARCHAR(20),
                                   NTCR_NM VARCHAR(20),
                                   PASSWORD VARCHAR(200),
                                   ATCH_FILE_ID VARCHAR(20),
                                   FRST_REGIST_PNTTM TIMESTAMP NOT NULL,
                                   FRST_REG_ID VARCHAR(20) NOT NULL,
                                   LAST_UPDT_PNTTM TIMESTAMP,
                                   LAST_UPDUSR_ID VARCHAR(20),
                                   PRIMARY KEY(NTT_ID, BBS_ID),
                                   CONSTRAINT SYS_FK_95 FOREIGN KEY(BBS_ID) REFERENCES TNBBSMASTER(BBS_ID)
);

CREATE TABLE iccom.TNBBSMASTEROPTN (
                                             BBS_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                             ANSWER_AT VARCHAR(1) NOT NULL DEFAULT '',
                                             STSFDG_AT VARCHAR(1) NOT NULL DEFAULT '',
                                             FRST_REGIST_PNTTM TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:00',
                                             LAST_UPDT_PNTTM TIMESTAMP,
                                             FRST_REG_ID VARCHAR(20) NOT NULL DEFAULT '',
                                             LAST_UPDUSR_ID VARCHAR(20)
);

CREATE TABLE iccom.TNBBSUSE (
                                      BBS_ID VARCHAR(20) NOT NULL,
                                      TRGET_ID VARCHAR(20) NOT NULL,
                                      USE_AT VARCHAR(1) NOT NULL,
                                      REGIST_SE_CODE VARCHAR(6),
                                      FRST_REGIST_PNTTM TIMESTAMP,
                                      FRST_REG_ID VARCHAR(20) NOT NULL,
                                      LAST_UPDT_PNTTM TIMESTAMP,
                                      LAST_UPDUSR_ID VARCHAR(20),
                                      PRIMARY KEY(BBS_ID, TRGET_ID),
                                      CONSTRAINT SYS_FK_98 FOREIGN KEY(BBS_ID) REFERENCES TNBBSMASTER(BBS_ID)
);

CREATE TABLE iccom.TNEMPLYRINFO (
                                          EMPLYR_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                          ORGNZT_ID VARCHAR(20),
                                          USER_NM VARCHAR(60) NOT NULL,
                                          PASSWORD VARCHAR(200) NOT NULL,
                                          EMPL_NO VARCHAR(20),
                                          IHIDNUM VARCHAR(13),
                                          SEXDSTN_CODE VARCHAR(1),
                                          BRTHDY VARCHAR(20),
                                          FXNUM VARCHAR(20),
                                          HOUSE_ADRES VARCHAR(100) NOT NULL,
                                          PASSWORD_HINT VARCHAR(100) NOT NULL,
                                          PASSWORD_CNSR VARCHAR(100) NOT NULL,
                                          HOUSE_END_TELNO VARCHAR(4) NOT NULL,
                                          AREA_NO VARCHAR(4) NOT NULL,
                                          DETAIL_ADRES VARCHAR(100),
                                          ZIP VARCHAR(6) NOT NULL,
                                          OFFM_TELNO VARCHAR(20),
                                          MBTLNUM VARCHAR(20) NOT NULL,
                                          EMAIL_ADRES VARCHAR(50),
                                          OFCPS_NM VARCHAR(60),
                                          HOUSE_MIDDLE_TELNO VARCHAR(4) NOT NULL,
                                          GROUP_ID VARCHAR(20),
                                          PSTINST_CODE VARCHAR(8),
                                          EMPLYR_STTUS_CODE VARCHAR(15) NOT NULL,
                                          ESNTL_ID VARCHAR(20) NOT NULL,
                                          CRTFC_DN_VALUE VARCHAR(20),
                                          SBSCRB_DE TIMESTAMP,
                                          CONSTRAINT SYS_FK_101 FOREIGN KEY(GROUP_ID) REFERENCES TNAUTHORGROUPINFO(GROUP_ID) ON DELETE CASCADE
);

CREATE TABLE iccom.THEMPLYRINFOCHANGEDTLS (
                                                    EMPLYR_ID VARCHAR(20) NOT NULL,
                                                    CHANGE_DE VARCHAR(20) NOT NULL,
                                                    ORGNZT_ID VARCHAR(20),
                                                    GROUP_ID VARCHAR(20),
                                                    EMPL_NO VARCHAR(20) NOT NULL,
                                                    SEXDSTN_CODE VARCHAR(1),
                                                    BRTHDY VARCHAR(20),
                                                    FXNUM VARCHAR(20),
                                                    HOUSE_ADRES VARCHAR(100) NOT NULL,
                                                    HOUSE_END_TELNO VARCHAR(4),
                                                    AREA_NO VARCHAR(4),
                                                    DETAIL_ADRES VARCHAR(100) NOT NULL,
                                                    ZIP VARCHAR(6) NOT NULL,
                                                    OFFM_TELNO VARCHAR(20),
                                                    MBTLNUM VARCHAR(20) NOT NULL,
                                                    EMAIL_ADRES VARCHAR(50),
                                                    HOUSE_MIDDLE_TELNO VARCHAR(4),
                                                    PSTINST_CODE VARCHAR(8),
                                                    EMPLYR_STTUS_CODE VARCHAR(15) NOT NULL,
                                                    ESNTL_ID VARCHAR(20),
                                                    PRIMARY KEY(EMPLYR_ID, CHANGE_DE),
                                                    CONSTRAINT SYS_FK_92 FOREIGN KEY(EMPLYR_ID) REFERENCES TNEMPLYRINFO(EMPLYR_ID)
);

CREATE TABLE iccom.TNEMPLYRSCRTYESTBS (
                                                SCRTY_DTRMN_TRGET_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                                MBER_TY_CODE VARCHAR(15),
                                                AUTHOR_CODE VARCHAR(30) NOT NULL,
                                                CONSTRAINT SYS_FK_104 FOREIGN KEY(SCRTY_DTRMN_TRGET_ID) REFERENCES TNEMPLYRINFO(EMPLYR_ID),
                                                CONSTRAINT SYS_FK_113 FOREIGN KEY(AUTHOR_CODE) REFERENCES TNAUTHORINFO(AUTHOR_CODE)
);

CREATE TABLE iccom.TNENTRPRSMBER (
                                           ENTRPRS_MBER_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                           ENTRPRS_SE_CODE VARCHAR(15),
                                           BIZRNO VARCHAR(10),
                                           JURIRNO VARCHAR(13),
                                           CMPNY_NM VARCHAR(60) NOT NULL,
                                           CXFC VARCHAR(50),
                                           ZIP VARCHAR(6) NOT NULL,
                                           ADRES VARCHAR(100) NOT NULL,
                                           ENTRPRS_MIDDLE_TELNO VARCHAR(4) NOT NULL,
                                           FXNUM VARCHAR(20),
                                           INDUTY_CODE VARCHAR(15),
                                           APPLCNT_NM VARCHAR(50) NOT NULL,
                                           APPLCNT_IHIDNUM VARCHAR(13),
                                           SBSCRB_DE TIMESTAMP,
                                           ENTRPRS_MBER_STTUS VARCHAR(15),
                                           ENTRPRS_MBER_PASSWORD VARCHAR(200),
                                           ENTRPRS_MBER_PASSWORD_HINT VARCHAR(100) NOT NULL,
                                           ENTRPRS_MBER_PASSWORD_CNSR VARCHAR(100) NOT NULL,
                                           GROUP_ID VARCHAR(20),
                                           DETAIL_ADRES VARCHAR(100),
                                           ENTRPRS_END_TELNO VARCHAR(4) NOT NULL,
                                           AREA_NO VARCHAR(4) NOT NULL,
                                           APPLCNT_EMAIL_ADRES VARCHAR(50) NOT NULL,
                                           ESNTL_ID VARCHAR(20) NOT NULL,
                                           CONSTRAINT SYS_FK_116 FOREIGN KEY(GROUP_ID) REFERENCES TNAUTHORGROUPINFO(GROUP_ID) ON DELETE CASCADE
);

CREATE TABLE iccom.TNGNRLMBER (
                                        MBER_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                        PASSWORD VARCHAR(200) NOT NULL,
                                        PASSWORD_HINT VARCHAR(100),
                                        PASSWORD_CNSR VARCHAR(100),
                                        IHIDNUM VARCHAR(13),
                                        MBER_NM VARCHAR(50) NOT NULL,
                                        ZIP VARCHAR(6) NOT NULL,
                                        ADRES VARCHAR(100) NOT NULL,
                                        AREA_NO VARCHAR(4) NOT NULL,
                                        MBER_STTUS VARCHAR(15),
                                        DETAIL_ADRES VARCHAR(100),
                                        END_TELNO VARCHAR(4) NOT NULL,
                                        MBTLNUM VARCHAR(20) NOT NULL,
                                        GROUP_ID VARCHAR(20),
                                        MBER_FXNUM VARCHAR(20),
                                        MBER_EMAIL_ADRES VARCHAR(50),
                                        MIDDLE_TELNO VARCHAR(4) NOT NULL,
                                        SBSCRB_DE TIMESTAMP,
                                        SEXDSTN_CODE VARCHAR(1),
                                        ESNTL_ID VARCHAR(20) NOT NULL,
                                        CONSTRAINT SYS_FK_122 FOREIGN KEY(GROUP_ID) REFERENCES TNAUTHORGROUPINFO(GROUP_ID) ON DELETE CASCADE
);

CREATE TABLE iccom.TNFILE (
                                    ATCH_FILE_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                    CREAT_DT TIMESTAMP NOT NULL,
                                    USE_AT VARCHAR(1)
);

CREATE TABLE iccom.TNFILEDETAIL (
                                          ATCH_FILE_ID VARCHAR(20) NOT NULL,
                                          FILE_SN NUMERIC(10) NOT NULL,
                                          FILE_STRE_COURS VARCHAR(2000) NOT NULL,
                                          STRE_FILE_NM VARCHAR(255) NOT NULL,
                                          ORIGNL_FILE_NM VARCHAR(255),
                                          FILE_EXTSN VARCHAR(20) NOT NULL,
                                          FILE_CN TEXT,  -- LONGVARCHAR → TEXT
                                          FILE_SIZE NUMERIC(8),
                                          PRIMARY KEY(ATCH_FILE_ID, FILE_SN),
                                          CONSTRAINT SYS_FK_119 FOREIGN KEY(ATCH_FILE_ID) REFERENCES TNFILE(ATCH_FILE_ID)
);

CREATE TABLE iccom.TNSCHDULINFO (
                                          SCHDUL_ID VARCHAR(20) NOT NULL PRIMARY KEY,
                                          SCHDUL_SE VARCHAR(1),
                                          SCHDUL_DEPT_ID VARCHAR(20),
                                          SCHDUL_KND_CODE VARCHAR(20),
                                          SCHDUL_BEGINDE TIMESTAMP,
                                          SCHDUL_ENDDE TIMESTAMP,
                                          SCHDUL_NM VARCHAR(255),
                                          SCHDUL_CN VARCHAR(2500),
                                          SCHDUL_PLACE VARCHAR(255),
                                          SCHDUL_IPCR_CODE VARCHAR(1),
                                          SCHDUL_CHARGER_ID VARCHAR(20),
                                          ATCH_FILE_ID VARCHAR(20),
                                          FRST_REGIST_PNTTM TIMESTAMP,
                                          FRST_REG_ID VARCHAR(20),
                                          LAST_UPDT_PNTTM TIMESTAMP,
                                          LAST_UPDUSR_ID VARCHAR(20),
                                          REPTIT_SE_CODE VARCHAR(3)
);

-- ID 생성용 테이블
CREATE TABLE iccom.IDS (
                                 TABLE_NAME VARCHAR(20) NOT NULL PRIMARY KEY,
                                 NEXT_ID BIGINT NOT NULL DEFAULT 0  -- NUMERIC(30) → BIGINT
);

CREATE TABLE iccom.COMTECOPSEQ (
                                         TABLE_NAME VARCHAR(20) NOT NULL PRIMARY KEY,
                                         NEXT_ID BIGINT NOT NULL DEFAULT 0  -- NUMERIC(30) → BIGINT
);

-- 통합관리자시스템 테이블들
CREATE TABLE iccom.COM_GROUP_CD (
                                          CD VARCHAR(100) NOT NULL,
                                          CD_NM VARCHAR(100) NOT NULL,
                                          CD_EXPLN VARCHAR(4000),
                                          USE_YN CHAR NOT NULL,  -- BOOLEAN → CHAR
                                          CD_SORT_SEQ NUMERIC(10),
                                          CD_CRT_DT TIMESTAMP,
                                          CD_CRT_USER_ID VARCHAR(100),
                                          CD_CHG_DT TIMESTAMP,
                                          CD_CHG_USER_ID VARCHAR(100),
                                          CONSTRAINT PK_COM_GROUP_CD PRIMARY KEY (CD)
);

-- COM_GROUP_CD 주석
COMMENT ON TABLE iccom.COM_GROUP_CD IS '공통 그룹 코드 테이블';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD IS '공통 그룹 코드 (PK)';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_NM IS '코드명';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_EXPLN IS '코드설명';
COMMENT ON COLUMN iccom.COM_GROUP_CD.USE_YN IS '사용여부 (Y/N)';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_SORT_SEQ IS '코드 정렬 순서';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_CRT_DT IS '코드 생성 일시';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_CRT_USER_ID IS '코드 생성 사용자 아이디';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_CHG_DT IS '코드 변경 일시';
COMMENT ON COLUMN iccom.COM_GROUP_CD.CD_CHG_USER_ID IS '코드 변경 사용자 아이디';

CREATE TABLE iccom.COM_CD (
                                    CD VARCHAR(100) NOT NULL,
                                    GROUP_CD VARCHAR(100) NOT NULL,
                                    CD_NM VARCHAR(100) NOT NULL,
                                    CD_EXPLN VARCHAR(4000),
                                    USE_YN CHAR NOT NULL,  -- BOOLEAN → CHAR
                                    CD_SORT_SEQ NUMERIC(10),
                                    CD_CRT_DT TIMESTAMP NOT NULL,
                                    CD_CRT_USER_ID VARCHAR(100) NOT NULL,
                                    CD_CHG_DT TIMESTAMP,
                                    CD_CHG_USER_ID VARCHAR(100),
                                    CONSTRAINT PK_COM_CD PRIMARY KEY (CD),
                                    CONSTRAINT FK_COM_GROUP_CD FOREIGN KEY (GROUP_CD) REFERENCES iccom.COM_GROUP_CD(CD) ON UPDATE CASCADE ON DELETE CASCADE
);

-- COM_CD 주석
COMMENT ON TABLE iccom.COM_CD IS '공통 코드 테이블';
COMMENT ON COLUMN iccom.COM_CD.CD IS '공통 코드 (PK)';
COMMENT ON COLUMN iccom.COM_CD.GROUP_CD IS '그룹코드';
COMMENT ON COLUMN iccom.COM_CD.CD_NM IS '코드명';
COMMENT ON COLUMN iccom.COM_CD.CD_EXPLN IS '코드설명';
COMMENT ON COLUMN iccom.COM_CD.USE_YN IS '사용여부 (Y/N)';
COMMENT ON COLUMN iccom.COM_CD.CD_SORT_SEQ IS '코드 정렬 순서';
COMMENT ON COLUMN iccom.COM_CD.CD_CRT_DT IS '코드 생성 일시';
COMMENT ON COLUMN iccom.COM_CD.CD_CRT_USER_ID IS '코드 생성 사용자 아이디';
COMMENT ON COLUMN iccom.COM_CD.CD_CHG_DT IS '코드 변경 일시';
COMMENT ON COLUMN iccom.COM_CD.CD_CHG_USER_ID IS '코드 변경 사용자 아이디';

CREATE TABLE iccom.SYS (
                                    SYS_CD VARCHAR(20) NOT NULL,
                                    SYS_NM VARCHAR(200),
                                    SYS_EXPLN VARCHAR(4000),
                                    SYS_URL_ADDR VARCHAR(2000),
                                    USE_BGNG_YMD DATE,
                                    USE_END_YMD DATE,
                                    USE_YN CHAR,
                                    FRST_REG_ID VARCHAR(20) NOT NULL,
                                    FRST_REG_DT TIMESTAMP NOT NULL,
                                    LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                    LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                    CONSTRAINT PK_SYS PRIMARY KEY (SYS_CD)
);

-- SYS 주석
COMMENT ON TABLE iccom.SYS IS '시스템 상세 정보 테이블';
COMMENT ON COLUMN iccom.SYS.SYS_CD IS '시스템 코드 (PK)';
COMMENT ON COLUMN iccom.SYS.SYS_NM IS '시스템명';
COMMENT ON COLUMN iccom.SYS.SYS_EXPLN IS '시스템 설명';
COMMENT ON COLUMN iccom.SYS.SYS_URL_ADDR IS '시스템 URL 주소';
COMMENT ON COLUMN iccom.SYS.USE_BGNG_YMD IS '사용 시작일';
COMMENT ON COLUMN iccom.SYS.USE_END_YMD IS '사용 종료일';
COMMENT ON COLUMN iccom.SYS.USE_YN IS '사용 여부 (Y/N)';

CREATE TABLE iccom.MENU (
                                  SYS_CD VARCHAR(20) NOT NULL,
                                  MENU_CD VARCHAR(20) NOT NULL,
                                  MENU_NM VARCHAR(100),
                                  MENU_EXPLN VARCHAR(4000),
                                  UP_MENU_CD VARCHAR(20),
                                  MENU_SORT_SEQ NUMERIC(10),
                                  ICON_PATH_NM VARCHAR(300),
                                  MENU_URL_ADDR VARCHAR(2000),
                                  MENU_ETC_URL_ADDR VARCHAR(2000),
                                  POPUP_YN CHAR(1) DEFAULT 'N',
                                  USE_YN CHAR(1) DEFAULT 'Y',
                                  FRST_REG_ID VARCHAR(20) NOT NULL,
                                  FRST_REG_DT TIMESTAMP NOT NULL,
                                  LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                  LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                  CONSTRAINT PK_MENU PRIMARY KEY (SYS_CD, MENU_CD)
);

-- MENU 주석
COMMENT ON TABLE iccom.MENU IS '메뉴 정보 테이블';
COMMENT ON COLUMN iccom.MENU.SYS_CD IS '시스템 코드 (FK)';
COMMENT ON COLUMN iccom.MENU.MENU_CD IS '메뉴 코드 (PK)';
COMMENT ON COLUMN iccom.MENU.MENU_NM IS '메뉴명';
COMMENT ON COLUMN iccom.MENU.UP_MENU_CD IS '상위 메뉴 코드 (FK)';
COMMENT ON COLUMN iccom.MENU.MENU_SORT_SEQ IS '메뉴 정렬 순서';
COMMENT ON COLUMN iccom.MENU.ICON_PATH_NM IS '아이콘 경로명';
COMMENT ON COLUMN iccom.MENU.MENU_URL_ADDR IS '메뉴 URL 주소';
COMMENT ON COLUMN iccom.MENU.USE_YN IS '사용 여부 (Y/N)';

CREATE TABLE iccom.TRMS (
                                  TRMS_ID VARCHAR(100) NOT NULL,
                                  TRGT_SYS_CD VARCHAR(100) NOT NULL,
                                  TRMS_TTL VARCHAR(300) NOT NULL,
                                  TRMS_TYPE VARCHAR(100) NOT NULL,
                                  VER VARCHAR(100) NOT NULL,
                                  TRMS_EXPLN VARCHAR(4000),
                                  BNGN_DATE VARCHAR(100),
                                  END_DATE VARCHAR(100),
                                  AGRE_YN CHAR,
                                  RE_AGRE_YN CHAR,
                                  STTS CHAR,
                                  TRMS_CN VARCHAR(4000),
                                  CHG_RSN_CN VARCHAR(4000),
                                  RELATE_STT VARCHAR(100),
                                  ACS_CNPL VARCHAR(100),
                                  ATCHMNFL_PATH VARCHAR(4000),
                                  RMRK_CN VARCHAR(4000),
                                  TRMS_CRT_DT TIMESTAMP,
                                  TRMS_CRT_USER_ID VARCHAR(100),
                                  TRMS_CHG_DT TIMESTAMP,
                                  TRMS_CHG_USER_ID VARCHAR(100),
                                  CONSTRAINT PK_TRMS PRIMARY KEY (TRMS_ID)
);

-- TRMS 주석
COMMENT ON TABLE iccom.TRMS IS '메뉴 상세 정보 테이블';
COMMENT ON COLUMN iccom.TRMS.TRMS_ID IS '약관 아이디 (PK)';
COMMENT ON COLUMN iccom.TRMS.TRGT_SYS_CD IS '대상 시스템 코드';
COMMENT ON COLUMN iccom.TRMS.TRMS_TTL IS '약관 제목';
COMMENT ON COLUMN iccom.TRMS.TRMS_TYPE IS '약관 유형';
COMMENT ON COLUMN iccom.TRMS.VER IS '버전';
COMMENT ON COLUMN iccom.TRMS.TRMS_EXPLN IS '약관 설명';
COMMENT ON COLUMN iccom.TRMS.BNGN_DATE IS '시작 날짜';
COMMENT ON COLUMN iccom.TRMS.END_DATE IS '종료 날짜';
COMMENT ON COLUMN iccom.TRMS.AGRE_YN IS '동의 여부';
COMMENT ON COLUMN iccom.TRMS.RE_AGRE_YN IS '재동의 여부';
COMMENT ON COLUMN iccom.TRMS.STTS IS '상태 ( 사용중, 등등 )';
COMMENT ON COLUMN iccom.TRMS.TRMS_CN IS '약관 내용';
COMMENT ON COLUMN iccom.TRMS.CHG_RSN_CN IS '변경 사유 내용';
COMMENT ON COLUMN iccom.TRMS.RELATE_STT IS '관련 법령';
COMMENT ON COLUMN iccom.TRMS.ACS_CNPL IS '접근 연락처';
COMMENT ON COLUMN iccom.TRMS.ATCHMNFL_PATH IS '첨부파일 경로';
COMMENT ON COLUMN iccom.TRMS.RMRK_CN IS '비고 내용';
COMMENT ON COLUMN iccom.TRMS.TRMS_CRT_DT IS '약관 생성 일시';
COMMENT ON COLUMN iccom.TRMS.TRMS_CRT_USER_ID IS '약관 생성 사용자 아이디';
COMMENT ON COLUMN iccom.TRMS.TRMS_CHG_DT IS '약관 변경 일시';
COMMENT ON COLUMN iccom.TRMS.TRMS_CHG_USER_ID IS '약관 변경 사용자 아이디';


CREATE TABLE iccom.TRMS_HSTRY (
                                        TRMS_HSTRY_ID VARCHAR(100) NOT NULL,
                                        TRMS_ID VARCHAR(100) NOT NULL,
                                        VER VARCHAR(100) NOT NULL,
                                        CHG_RSN_CN VARCHAR(4000),
                                        TRMS_CN VARCHAR(4000) NOT NULL,
                                        TRMS_HSTRY_CRT_DT TIMESTAMP NOT NULL,
                                        TRMS_HSTRY_CRT_USER_ID VARCHAR(100) NOT NULL,
                                        TRMS_HSTRY_CHG_DT TIMESTAMP NOT NULL,
                                        TRMS_HSTRY_CHG_USER_ID VARCHAR(100) NOT NULL,
                                        CONSTRAINT PK_TRMS_HSTRY PRIMARY KEY (TRMS_HSTRY_ID)
);

-- TRMS_HSTRY 주석
COMMENT ON TABLE iccom.TRMS_HSTRY IS '약관 이력 테이블';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_HSTRY_ID IS '약관 이력 아이디 (PK)';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_ID IS '약관 아이디 (FK)';
COMMENT ON COLUMN iccom.TRMS_HSTRY.VER IS '버전';
COMMENT ON COLUMN iccom.TRMS_HSTRY.CHG_RSN_CN IS '변경 사유 내용';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_CN IS '약관 내용';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_HSTRY_CRT_DT IS '약관 생성 일시';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_HSTRY_CRT_USER_ID IS '약관 생성 사용자 아이디';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_HSTRY_CHG_DT IS '약관 변경 일시';
COMMENT ON COLUMN iccom.TRMS_HSTRY.TRMS_HSTRY_CHG_USER_ID IS '약관 변경 사용자 아이디';

CREATE TABLE iccom.ROLE (
                                  ROLE_CD VARCHAR(100) NOT NULL,
                                  ROLE_NM VARCHAR(200) NOT NULL,
                                  ROLE_EXPLN VARCHAR(4000),
                                  ROLE_TYPE_CD VARCHAR(20) NOT NULL,
                                  UP_ROLE_CD VARCHAR(100),
                                  ROLE_SORT_SEQ NUMERIC(10) NOT NULL,
                                  SYS_CD VARCHAR(20),
                                  USE_YN CHAR(1) DEFAULT 'Y' NOT NULL,
                                  FRST_REG_ID VARCHAR(20) NOT NULL,
                                  FRST_REG_DT TIMESTAMP NOT NULL,
                                  LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                  LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                  CONSTRAINT PK_ROLE PRIMARY KEY (ROLE_CD)
);

-- ROLE 주석
COMMENT ON TABLE iccom.ROLE IS '역할 상세 정보 테이블';
COMMENT ON COLUMN iccom.ROLE.ROLE_CD IS '역할 코드 (PK) - ex) ROLE_RES_ADMIN, ROLE_SYS_TMPR';
COMMENT ON COLUMN iccom.ROLE.ROLE_NM IS '역할명';
COMMENT ON COLUMN iccom.ROLE.ROLE_EXPLN IS '역할 설명';
COMMENT ON COLUMN iccom.ROLE.ROLE_TYPE_CD IS '역할 유형 코드 - ROLTYP001(통합관리자), ROLTYP002(업무관리자), ROLTYP003(업무사용자), ROLETY999(임시)';
COMMENT ON COLUMN iccom.ROLE.UP_ROLE_CD IS '상위 역할 코드 (자기참조 FK) - 통합관리자 > 업무관리자 > 업무사용자 3단계 가능';
COMMENT ON COLUMN iccom.ROLE.ROLE_SORT_SEQ IS '역할 정렬 순서';
COMMENT ON COLUMN iccom.ROLE.SYS_CD IS '시스템 코드 - 통합관리자:NULL, 업무관리자/업무사용자:SYS_CD';
COMMENT ON COLUMN iccom.ROLE.USE_YN IS '사용 여부 (Y/N)';
COMMENT ON COLUMN iccom.ROLE.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.ROLE.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.ROLE.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.ROLE.LAST_MDFCN_DT IS '최종 수정 일시';

CREATE TABLE iccom.AUTHRT (
                                    AUTHRT_CD VARCHAR(100) NOT NULL,
                                    AUTHRT_NM VARCHAR(200) NOT NULL,
                                    AUTHRT_EXPLN VARCHAR(4000),
                                    AUTHRT_TYPE_CD VARCHAR(20) NOT NULL,
                                    SYS_CD VARCHAR(20),
                                    USE_YN CHAR(1) DEFAULT 'Y' NOT NULL,
                                    FRST_REG_ID VARCHAR(20) NOT NULL,
                                    FRST_REG_DT TIMESTAMP NOT NULL,
                                    LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                    LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                    CONSTRAINT PK_AUTHRT PRIMARY KEY (AUTHRT_CD, SYS_CD)
);

-- AUTHRT 주석
COMMENT ON TABLE iccom.AUTHRT IS '권한 상세 정보 테이블';
COMMENT ON COLUMN iccom.AUTHRT.AUTHRT_CD IS '권한 코드 (PK) - ex) PERM_MENU_ACCESS, PERM_SYS_AAA, PERM_DATA_AAA, PERM_FUNC_AAA, PERM_TOOL_AAA';
COMMENT ON COLUMN iccom.AUTHRT.AUTHRT_NM IS '권한명';
COMMENT ON COLUMN iccom.AUTHRT.AUTHRT_EXPLN IS '권한 설명';
COMMENT ON COLUMN iccom.AUTHRT.AUTHRT_TYPE_CD IS '권한 유형 코드 - PERMTY001(시스템), PERMTY002(메뉴), PERMTY003(기능), PERMTY004(데이터), PERMTY005(도구)';
COMMENT ON COLUMN iccom.AUTHRT.SYS_CD IS '시스템 코드 - 전체용:NULL, 시스템한정:SYS_CD';
COMMENT ON COLUMN iccom.AUTHRT.USE_YN IS '사용 여부 (Y/N)';
COMMENT ON COLUMN iccom.AUTHRT.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.AUTHRT.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.AUTHRT.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.AUTHRT.LAST_MDFCN_DT IS '최종 수정 일시';


CREATE TABLE iccom.AUTHRT_STNG (
                                                   AUTHRT_CD VARCHAR(100) NOT NULL,
                                                   AUTHRT_STNG_TYPE_CD VARCHAR(20) NOT NULL,
                                                   AUTHRT_STNG_TRGT_CD VARCHAR(20) NOT NULL,
                                                   FRST_REG_ID VARCHAR(20) NOT NULL,
                                                   FRST_REG_DT TIMESTAMP NOT NULL,
                                                   LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                   LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                   CONSTRAINT PK_AUTHRT_STNG PRIMARY KEY (AUTHRT_CD, AUTHRT_STNG_TYPE_CD, AUTHRT_STNG_TRGT_CD)
);


CREATE TABLE iccom.DEPT (
                                  DEPT_CD VARCHAR(20) NOT NULL,
                                  DEPT_STCD VARCHAR(20),
                                  DEPT_NM VARCHAR(200),
                                  DEPT_WHOL_NM VARCHAR(200),
                                  DEPT_ENG_NM VARCHAR(200),
                                  HGHRK_INST_CD VARCHAR(20),
                                  SHGHRK_INST_CD VARCHAR(20),
                                  SFRND_SE_CD VARCHAR(20),
                                  CYCL NUMERIC(7),
                                  RANK_NO NUMERIC(4),
                                  RPRS_TELNO VARCHAR(11),
                                  ADDR VARCHAR(200),
                                  DADDR VARCHAR(200),
                                  HMPG_URL_ADDR VARCHAR(2000),
                                  FXNO VARCHAR(20),
                                  EML_ADDR VARCHAR(320),
                                  TMPR_OGNZ_YN CHAR(1),
                                  VR_OGNZ_TR_YN CHAR(1),
                                  VR_OGNZ_TR_UP_CD VARCHAR(20),
                                  FRST_REG_ID VARCHAR(20) NOT NULL,
                                  FRST_REG_DT TIMESTAMP NOT NULL,
                                  LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                  LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                  CONSTRAINT PK_DEPT PRIMARY KEY (DEPT_CD)
);

-- DEPT 주석
COMMENT ON TABLE iccom.DEPT IS '부서 정보 테이블';
COMMENT ON COLUMN iccom.DEPT.DEPT_CD IS '부서 코드 (PK)';
COMMENT ON COLUMN iccom.DEPT.DEPT_STCD IS '부서 상태 코드';
COMMENT ON COLUMN iccom.DEPT.DEPT_NM IS '부서명';
COMMENT ON COLUMN iccom.DEPT.DEPT_WHOL_NM IS '부서 전체명';
COMMENT ON COLUMN iccom.DEPT.DEPT_ENG_NM IS '부서 영문명';
COMMENT ON COLUMN iccom.DEPT.HGHRK_INST_CD IS '최상위 기관 코드';
COMMENT ON COLUMN iccom.DEPT.SHGHRK_INST_CD IS '차상위 기관 코드';
COMMENT ON COLUMN iccom.DEPT.SFRND_SE_CD IS '자치단체 구분코드';
COMMENT ON COLUMN iccom.DEPT.CYCL IS '차수';
COMMENT ON COLUMN iccom.DEPT.RANK_NO IS '랭크 번호';
COMMENT ON COLUMN iccom.DEPT.RPRS_TELNO IS '대표전화번호';
COMMENT ON COLUMN iccom.DEPT.ADDR IS '주소';
COMMENT ON COLUMN iccom.DEPT.DADDR IS '상세주소';
COMMENT ON COLUMN iccom.DEPT.HMPG_URL_ADDR IS '홈페이지 URL 주소';
COMMENT ON COLUMN iccom.DEPT.FXNO IS '팩스번호';
COMMENT ON COLUMN iccom.DEPT.EML_ADDR IS '이메일주소';
COMMENT ON COLUMN iccom.DEPT.TMPR_OGNZ_YN IS '임시조직여부';
COMMENT ON COLUMN iccom.DEPT.VR_OGNZ_TR_YN IS '가상조직트리여부';
COMMENT ON COLUMN iccom.DEPT.VR_OGNZ_TR_UP_CD IS '가상조직트리상위코드';
COMMENT ON COLUMN iccom.DEPT.FRST_REG_ID IS '최초 등록 아이디';
COMMENT ON COLUMN iccom.DEPT.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.DEPT.LAST_MDFCN_ID IS '최종 수정 아이디';
COMMENT ON COLUMN iccom.DEPT.LAST_MDFCN_DT IS '최종 수정 일시';

CREATE TABLE iccom.JBGD (
                                  JBGD_CD VARCHAR(100) NOT NULL,
                                  JBGD_NM VARCHAR(100) NOT NULL,
                                  JBGD_REG_DT TIMESTAMP,
                                  JBGD_REG_USER_ID VARCHAR(100),
                                  JBGD_MDFCN_DT TIMESTAMP,
                                  JBGD_MDFCN_USER_ID VARCHAR(100),
                                  PRIMARY KEY (JBGD_CD)
);

-- JBGD 주석
COMMENT ON TABLE iccom.JBGD IS '직급 정보 테이블';
COMMENT ON COLUMN iccom.JBGD.JBGD_CD IS '직급 코드 (PK)';
COMMENT ON COLUMN iccom.JBGD.JBGD_NM IS '직급 이름';

CREATE TABLE iccom.USER (
                              user_unq_id varchar(20) NOT NULL,
                              user_id varchar(20) NOT NULL,
                              USER_STCD varchar(20) NULL,
                              user_nm varchar(100) NULL,
                              user_eng_nm varchar(100) NULL,
                              user_whol_nm varchar(200) NULL,
                              emp_no varchar(20) NULL,
                              dept_cd varchar(20) NULL,
                              dept_nm varchar(200) NULL,
                              dept_whol_nm varchar(200) NULL,
                              jbgd_cd varchar(20) NULL,
                              jbgd_nm varchar(100) NULL,
                              jbps_cd varchar(20) NULL,
                              jbps_nm varchar(100) NULL,
                              jbttl_nm varchar(100) NULL,
                              gndr_cd varchar(20) NULL,
                              brdt bpchar(8) NULL,
                              rank_no numeric(4) NULL,
                              hghrk_inst_cd varchar(20) NULL,
                              shghrk_inst_cd varchar(20) NULL,
                              work_type_cd varchar(20) NULL,
                              etc_dept_nm varchar(200) NULL,
                              etc_dept_cd varchar(20) NULL,
                              VHRNO varchar(100) NULL,
                              cn varchar(100) NULL,
                              photo_path_nm varchar(300) NULL,
                              ofc_telno varchar(11) NULL,
                              ofc_fxno varchar(20) NULL,
                              tkcg_task_cn varchar(4000) NULL,
                              eml_addr varchar(320) NULL,
                              otsd_eml_addr varchar(320) NULL,
                              mbl_telno varchar(11) NULL,
                              hmpg_url_addr varchar(2000) NULL,
                              house_telno varchar(11) NULL,
                              house_addr varchar(200) NULL,
                              house_daddr varchar(200) NULL,
                              mrg_ymd date NULL,
                              frst_reg_id varchar(20) NOT NULL,
                              frst_reg_dt timestamp NOT NULL,
                              last_mdfcn_id varchar(20) NOT NULL,
                              last_mdfcn_dt timestamp NOT NULL,
                              CONSTRAINT pk_user PRIMARY KEY (user_unq_id)
);

-- USER 주석
COMMENT ON TABLE iccom.USER IS '사용자 정보 테이블';
COMMENT ON COLUMN iccom.USER.USER_UNQ_ID IS '사용자 고유 아이디 (PK)';
COMMENT ON COLUMN iccom.USER.USER_ID IS '사용자 아이디 (UK)';
COMMENT ON COLUMN iccom.USER.USER_STCD IS '사용자 상태 코드';
COMMENT ON COLUMN iccom.USER.USER_NM IS '사용자명';
COMMENT ON COLUMN iccom.USER.USER_ENG_NM IS '사용자 영문명';
COMMENT ON COLUMN iccom.USER.USER_WHOL_NM IS '사용자 전체명';
COMMENT ON COLUMN iccom.USER.EMP_NO IS '사원번호';
COMMENT ON COLUMN iccom.USER.DEPT_CD IS '부서 코드';
COMMENT ON COLUMN iccom.USER.DEPT_NM IS '부서명';
COMMENT ON COLUMN iccom.USER.DEPT_WHOL_NM IS '부서 전체명';
COMMENT ON COLUMN iccom.USER.JBGD_CD IS '직급 코드';
COMMENT ON COLUMN iccom.USER.JBGD_NM IS '직급명';
COMMENT ON COLUMN iccom.USER.JBPS_CD IS '직위 코드';
COMMENT ON COLUMN iccom.USER.JBPS_NM IS '직위명';
COMMENT ON COLUMN iccom.USER.JBTTL_NM IS '직책명';
COMMENT ON COLUMN iccom.USER.GNDR_CD IS '성별 코드';
COMMENT ON COLUMN iccom.USER.BRDT IS '생년월일';
COMMENT ON COLUMN iccom.USER.RANK_NO IS '랭크 번호';
COMMENT ON COLUMN iccom.USER.HGHRK_INST_CD IS '최상위 기관 코드';
COMMENT ON COLUMN iccom.USER.SHGHRK_INST_CD IS '차상위 기관 코드';
COMMENT ON COLUMN iccom.USER.WORK_TYPE_CD IS '근무 유형 코드';
COMMENT ON COLUMN iccom.USER.ETC_DEPT_NM IS '기타 부서명';
COMMENT ON COLUMN iccom.USER.ETC_DEPT_CD IS '기타 부서 코드';
COMMENT ON COLUMN iccom.USER.VHRNO IS '차량번호';
COMMENT ON COLUMN iccom.USER.CN IS 'CN';
COMMENT ON COLUMN iccom.USER.PHOTO_PATH_NM IS '사진 경로명';
COMMENT ON COLUMN iccom.USER.OFC_TELNO IS '사무실 전화번호';
COMMENT ON COLUMN iccom.USER.OFC_FXNO IS '사무실 팩스번호';
COMMENT ON COLUMN iccom.USER.TKCG_TASK_CN IS '담당 업무 내용';
COMMENT ON COLUMN iccom.USER.EML_ADDR IS '이메일 주소';
COMMENT ON COLUMN iccom.USER.OTSD_EML_ADDR IS '외부 이메일 주소';
COMMENT ON COLUMN iccom.USER.MBL_TELNO IS '휴대전화번호';
COMMENT ON COLUMN iccom.USER.HMPG_URL_ADDR IS '홈페이지 URL 주소';
COMMENT ON COLUMN iccom.USER.HOUSE_TELNO IS '집 전화번호';
COMMENT ON COLUMN iccom.USER.HOUSE_ADDR IS '집 주소';
COMMENT ON COLUMN iccom.USER.HOUSE_DADDR IS '집 상세주소';
COMMENT ON COLUMN iccom.USER.MRG_YMD IS '결혼일자';


CREATE TABLE iccom.USER_ROLE_MPNG (
                                            USER_ID VARCHAR(20) NOT NULL,
                                            ROLE_CD VARCHAR(100) NOT NULL,
                                            ROLE_BGNG_YMD DATE,
                                            ROLE_END_YMD DATE,
                                            FRST_REG_ID VARCHAR(20) NOT NULL,
                                            FRST_REG_DT TIMESTAMP NOT NULL,
                                            LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                            LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                            CONSTRAINT PK_USER_ROLE_MPNG PRIMARY KEY (USER_ID, ROLE_CD)
);

-- USER_ROLE_MPNG 주석
COMMENT ON TABLE iccom.USER_ROLE_MPNG IS '사용자_역할_매핑 테이블';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.USER_ID IS '사용자 아이디 (PK)';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.ROLE_CD IS '역할 코드 (PK)';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.ROLE_BGNG_YMD IS '역할 시작 일자';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.ROLE_END_YMD IS '역할 종료 일자';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_MPNG.LAST_MDFCN_DT IS '최종 수정 일시';


CREATE TABLE iccom.SYS_ROLE_AUTHRT_MPNG (
                                                   SYS_CD VARCHAR(20) NOT NULL,
                                                   ROLE_CD VARCHAR(100) NOT NULL,
                                                   AUTHRT_CD VARCHAR(100) NOT NULL,
                                                   FRST_REG_ID VARCHAR(20) NOT NULL,
                                                   FRST_REG_DT TIMESTAMP NOT NULL,
                                                   LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                   LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                   CONSTRAINT PK_SYS_ROLE_AUTHRT_MPNG PRIMARY KEY (SYS_CD, ROLE_CD, AUTHRT_CD)
);

-- SYS_ROLE_AUTHRT_MPNG 주석
COMMENT ON TABLE iccom.SYS_ROLE_AUTHRT_MPNG IS '시스템_역할_권한_매핑 테이블';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.SYS_CD IS '시스템 코드 (PK)';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.ROLE_CD IS '역할 코드 (PK)';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.AUTHRT_CD IS '권한 코드 (PK) - PERM_SYS_* = 시스템전역권한 체크';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.SYS_ROLE_AUTHRT_MPNG.LAST_MDFCN_DT IS '최종 수정 일시';

CREATE TABLE iccom.MENU_ROLE_AUTHRT_MPNG (
                                                   MENU_CD VARCHAR(20) NOT NULL,
                                                   ROLE_CD VARCHAR(100) NOT NULL,
                                                   AUTHRT_CD VARCHAR(100) NOT NULL,
                                                   FRST_REG_ID VARCHAR(20) NOT NULL,
                                                   FRST_REG_DT TIMESTAMP NOT NULL,
                                                   LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                   LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                   CONSTRAINT PK_MENU_ROLE_AUTHRT_MPNG PRIMARY KEY (MENU_CD, ROLE_CD, AUTHRT_CD)
);

-- MENU_ROLE_AUTHRT_MPNG 주석
COMMENT ON TABLE iccom.MENU_ROLE_AUTHRT_MPNG IS '메뉴_역할_권한_매핑 테이블';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.MENU_CD IS '메뉴 코드 (PK)';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.ROLE_CD IS '역할 코드 (PK)';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.AUTHRT_CD IS '권한 코드 (PK) - PERM_MENU_ACCESS = 메뉴체크, PERM_DATA/FUNC/TOOL_* = 메뉴말단체크';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.MENU_ROLE_AUTHRT_MPNG.LAST_MDFCN_DT IS '최종 수정 일시';


CREATE TABLE iccom.TMPR_USER_AUTHRT (
                                        USER_ID VARCHAR(20) NOT NULL,
                                        ROLE_CD VARCHAR(100) NOT NULL,
                                        ROLE_BGNG_YMD DATE NULL,
                                        ROLE_END_YMD DATE NULL,
                                        APLCN_RSN VARCHAR(4000) NULL,
                                        FRST_REG_ID VARCHAR(20) NOT NULL,
                                        FRST_REG_DT TIMESTAMP NOT NULL,
                                        LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                        LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                        CONSTRAINT PK_TMPR_USER_AUTHRT PRIMARY KEY (USER_ID, ROLE_CD)
);

COMMENT ON TABLE iccom.TMPR_USER_AUTHRT IS '임시_사용자_권한';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.USER_ID IS '사용자 ID (ROLETY999 고정)';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.ROLE_CD IS '역할 코드';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.ROLE_BGNG_YMD IS '시작일자';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.ROLE_END_YMD IS '종료일자';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.APLCN_RSN IS '적용사유';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.FRST_REG_ID IS '최초등록자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.FRST_REG_DT IS '최초등록일시';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.LAST_MDFCN_ID IS '최종수정자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT.LAST_MDFCN_DT IS '최종수정일시';


CREATE TABLE iccom.TMPR_USER_AUTHRT_MENU_MPNG (
                                                  USER_ID VARCHAR(20) NOT NULL,
                                                  ROLE_CD VARCHAR(100) NOT NULL,
                                                  AUTHRT_CD VARCHAR(100) NOT NULL,
                                                  MENU_CD VARCHAR(20) NOT NULL,
                                                  FRST_REG_ID VARCHAR(20) NOT NULL,
                                                  FRST_REG_DT TIMESTAMP NOT NULL,
                                                  LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                  LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                  CONSTRAINT PK_TMPR_USER_AUTHRT_MENU_MPNG PRIMARY KEY (USER_ID, ROLE_CD, AUTHRT_CD, MENU_CD)
);

COMMENT ON TABLE iccom.TMPR_USER_AUTHRT_MENU_MPNG IS '임시_사용자_권한_메뉴_매핑';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.USER_ID IS '사용자 ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.ROLE_CD IS '역할 코드 (ROLETY999 고정)';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.AUTHRT_CD IS '권한 코드';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.MENU_CD IS '메뉴 코드';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.FRST_REG_ID IS '최초등록자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.FRST_REG_DT IS '최초등록일시';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.LAST_MDFCN_ID IS '최종수정자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_MENU_MPNG.LAST_MDFCN_DT IS '최종수정일시';


CREATE TABLE iccom.TMPR_USER_AUTHRT_SYS_MPNG (
                                                 USER_ID VARCHAR(20) NOT NULL,
                                                 ROLE_CD VARCHAR(100) NOT NULL,
                                                 AUTHRT_CD VARCHAR(100) NOT NULL,
                                                 SYS_CD VARCHAR(20) NOT NULL,
                                                 FRST_REG_ID VARCHAR(20) NOT NULL,
                                                 FRST_REG_DT TIMESTAMP NOT NULL,
                                                 LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                 LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                 CONSTRAINT PK_TMPR_USER_AUTHRT_SYS_MPNG PRIMARY KEY (USER_ID, ROLE_CD, AUTHRT_CD, SYS_CD)
);

COMMENT ON TABLE iccom.TMPR_USER_AUTHRT_SYS_MPNG IS '임시_사용자_권한_시스템_매핑';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.USER_ID IS '사용자 ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.ROLE_CD IS '역할 코드 (ROLETY999 고정)';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.AUTHRT_CD IS '권한 코드';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.SYS_CD IS '시스템 코드';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.FRST_REG_ID IS '최초등록자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.FRST_REG_DT IS '최초등록일시';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.LAST_MDFCN_ID IS '최종수정자ID';
COMMENT ON COLUMN iccom.TMPR_USER_AUTHRT_SYS_MPNG.LAST_MDFCN_DT IS '최종수정일시';


CREATE TABLE iccom.USER_ROLE_APLY_MST (
                                                APLY_SN NUMERIC(22) NOT NULL,
                                                APLY_STCD VARCHAR(20) NOT NULL,
                                                SYS_CD VARCHAR(20) NOT NULL,
                                                APLCN_USER_ID VARCHAR(20) NOT NULL,
                                                RVW_USER_ID VARCHAR(20),
                                                GRNT_TYPE_CD VARCHAR(20) NOT NULL,
                                                ATCH_FILE_ID VARCHAR(20),
                                                APLY_DT TIMESTAMP,
                                                APRV_DT TIMESTAMP,
                                                APLY_RSN VARCHAR(4000),
                                                RVW_OPNN_CN VARCHAR(4000),
                                                APLY_BGNG_YMD DATE,
                                                APLY_END_YMD DATE,
                                                FRST_REG_ID VARCHAR(20) NOT NULL,
                                                FRST_REG_DT TIMESTAMP NOT NULL,
                                                LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                CONSTRAINT PK_USER_ROLE_APLY_MST PRIMARY KEY (APLY_SN)
);

-- USER_ROLE_APLY_MST 주석
COMMENT ON TABLE iccom.USER_ROLE_APLY_MST IS '사용자_역할_신청_마스터 테이블';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_SN IS '신청 일련번호 (PK)';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_STCD IS '신청 상태 코드 - 대기 - 승인/반려 | 할당 | 만료';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.SYS_CD IS '시스템 코드';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLCN_USER_ID IS '적용 사용자 아이디';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APRV_USER_ID IS '검토 사용자 아이디';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.GRNT_TYPE_CD IS '부여 유형 코드';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.ATCH_FILE_ID IS '첨부 파일 아이디';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_DT IS '신청 일시';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APRV_DT IS '승인 일시';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_RSN IS '신청 사유';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.RVW_OPNN_CN IS '검토 의견 내용';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_BGNG_YMD IS '신청 시작 일자';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.APLY_END_YMD IS '신청 종료 일자';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_MST.LAST_MDFCN_DT IS '최종 수정 일시';


CREATE TABLE iccom.USER_ROLE_APLY_DTL (
                                                APLY_DTL_SN NUMERIC(22) NOT NULL,
                                                APLY_SN NUMERIC(22) NOT NULL,
                                                APLCN_USER_ID VARCHAR(20) NOT NULL,
                                                SYS_CD VARCHAR(20) NOT NULL,
                                                ROLE_CD VARCHAR(100) NOT NULL,
                                                FRST_REG_ID VARCHAR(20) NOT NULL,
                                                FRST_REG_DT TIMESTAMP NOT NULL,
                                                LAST_MDFCN_ID VARCHAR(20) NOT NULL,
                                                LAST_MDFCN_DT TIMESTAMP NOT NULL,
                                                CONSTRAINT PK_USER_ROLE_APLY_DTL PRIMARY KEY (APLY_DTL_SN, APLY_SN)
);

-- USER_ROLE_APLY_DTL 주석
COMMENT ON TABLE iccom.USER_ROLE_APLY_DTL IS '사용자_역할_신청_상세 테이블';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.APLY_DTL_SN IS '신청 상세 일련번호 (PK)';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.APLY_SN IS '신청 일련번호 (PK)';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.APLCN_USER_ID IS '적용 사용자 아이디';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.SYS_CD IS '시스템 코드';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.ROLE_CD IS '역할 코드';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.FRST_REG_ID IS '최초 등록자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.LAST_MDFCN_ID IS '최종 수정자 ID';
COMMENT ON COLUMN iccom.USER_ROLE_APLY_DTL.LAST_MDFCN_DT IS '최종 수정 일시';


-- 자료연계
-- LINK 테이블 생성
CREATE TABLE iccom.LINK (
    LINK_ID             VARCHAR(50) NOT NULL,       -- 연계 아이디 (PK)
    LINK_GROUP_NM       VARCHAR(200),                -- 연계 그룹 코드
    LINK_NM             VARCHAR(200) NOT NULL,      -- 연계 명
    LINK_TYPE_CD        VARCHAR(20) NOT NULL,       -- 연계 유형 코드
    PVSN_INST_NM        VARCHAR(200),               -- 제공 기관 명
    PVSN_SYS_NM         VARCHAR(200) NOT NULL,      -- 제공 시스템 명
    CYCLE_CD            VARCHAR(20) NOT NULL,       -- 주기 코드
    LAST_LINK_STCD      VARCHAR(20) NOT NULL,       -- 최종 연계 상태코드
    UTZTN_SYS_NM        VARCHAR(200),               -- 이용 시스템 명
    USE_YN              CHAR(1) NOT NULL,           -- 사용 여부
    LINK_DRC_CD         VARCHAR(20),                -- 연계 방향 코드
    LNKG_MTH_CD         VARCHAR(20),                -- 연결 방식 코드
    LNKG_ADDR           VARCHAR(2000),              -- 연결 주소
    CERT_NM             VARCHAR(200),               -- 인증 명
    LNKG_TRGT_NM        VARCHAR(200),               -- 연결 대상 명
    RMRK_CN             VARCHAR(4000),              -- 비고 내용
    HOPR_PSBLTY_YN      CHAR(1) NOT NULL,           -- 수동 가능 여부
    HOPR_TYPE_CD        VARCHAR(20),                -- 수동 유형 코드
    FRST_REG_ID    VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT         TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID       VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT       TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_LINK PRIMARY KEY (LINK_ID)
);

-- LINK 테이블 주석
COMMENT ON TABLE iccom.LINK IS '연계 정보 테이블';
COMMENT ON COLUMN iccom.LINK.LINK_ID IS '연계 아이디 (PK)';
COMMENT ON COLUMN iccom.LINK.LINK_GROUP_NM IS '연계 그룹 코드';
COMMENT ON COLUMN iccom.LINK.LINK_NM IS '연계 명';
COMMENT ON COLUMN iccom.LINK.LINK_TYPE_CD IS '연계 유형 코드';
COMMENT ON COLUMN iccom.LINK.PVSN_INST_NM IS '제공 기관 명';
COMMENT ON COLUMN iccom.LINK.PVSN_SYS_NM IS '제공 시스템 명';
COMMENT ON COLUMN iccom.LINK.CYCLE_CD IS '주기 코드';
COMMENT ON COLUMN iccom.LINK.LAST_LINK_STCD IS '최종 연계 상태코드';
COMMENT ON COLUMN iccom.LINK.UTZTN_SYS_NM IS '이용 시스템 명';
COMMENT ON COLUMN iccom.LINK.USE_YN IS '사용 여부 (Y/N)';
COMMENT ON COLUMN iccom.LINK.LINK_DRC_CD IS '연계 방향 코드';
COMMENT ON COLUMN iccom.LINK.LNKG_MTH_CD IS '연결 방식 코드';
COMMENT ON COLUMN iccom.LINK.LNKG_ADDR IS '연결 주소';
COMMENT ON COLUMN iccom.LINK.CERT_NM IS '인증 명';
COMMENT ON COLUMN iccom.LINK.LNKG_TRGT_NM IS '연결 대상 명';
COMMENT ON COLUMN iccom.LINK.RMRK_CN IS '비고 내용';
COMMENT ON COLUMN iccom.LINK.HOPR_PSBLTY_YN IS '수동 가능 여부 (Y/N)';
COMMENT ON COLUMN iccom.LINK.HOPR_TYPE_CD IS '수동 유형 코드';
COMMENT ON COLUMN iccom.LINK.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.LINK.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.LINK.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.LINK.LAST_MDFCN_DT IS '최종 수정 일시';


-- LINK_METDATA 테이블 생성
CREATE TABLE iccom.LINK_METDATA (
    METDATA_SN          NUMERIC(22) NOT NULL,       -- 메타데이터 일련번호 (PK)
    LINK_ID             VARCHAR(50) NOT NULL,       -- 연계 아이디 (FK)
    SORT_SEQ            NUMERIC(10) NOT NULL DEFAULT 0, -- 정렬순서
    METDATA_NM          VARCHAR(300) NOT NULL,      -- 메타데이터 명
    METDATA_EXPLN       VARCHAR(4000),              -- 메타데이터 설명
    METDATA_TY_NM       VARCHAR(100) NOT NULL,      -- 메타데이터 타입 명
    METDATA_LEN_CNT     NUMERIC(10),                -- 메타데이터 길이 수
    METDATA_ESNTL_YN    CHAR(1) NOT NULL,           -- 메타데이터 필수 여부
    METDATA_DFLT_NM     VARCHAR(300),               -- 메타데이터 디폴트 명
    FRST_REG_ID    VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT         TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID       VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT       TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_LINK_METDATA PRIMARY KEY (METDATA_SN),
    CONSTRAINT FK_LINK_METDATA_LINK FOREIGN KEY (LINK_ID) REFERENCES iccom.LINK(LINK_ID)
);

-- LINK_METDATA 테이블 주석
COMMENT ON TABLE iccom.LINK_METDATA IS '연계 메타데이터 정보 테이블';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_SN IS '메타데이터 일련번호 (PK)';
COMMENT ON COLUMN iccom.LINK_METDATA.LINK_ID IS '연계 아이디 (FK)';
COMMENT ON COLUMN iccom.LINK_METDATA.SORT_SEQ IS '정렬순서';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_NM IS '메타데이터 명';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_EXPLN IS '메타데이터 설명';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_TY_NM IS '메타데이터 타입 명';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_LEN_CNT IS '메타데이터 길이 수';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_ESNTL_YN IS '메타데이터 필수 여부 (Y/N)';
COMMENT ON COLUMN iccom.LINK_METDATA.METDATA_DFLT_NM IS '메타데이터 디폴트 명';
COMMENT ON COLUMN iccom.LINK_METDATA.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.LINK_METDATA.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.LINK_METDATA.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.LINK_METDATA.LAST_MDFCN_DT IS '최종 수정 일시';



-- LINK_METDATA_DMND 테이블 생성
CREATE TABLE iccom.LINK_METDATA_DMND (
    LINK_METDATA_DMND_SN    NUMERIC(20) NOT NULL,       -- 연계 메타데이터 요청 일련번호 (PK)
    LINK_ID                 VARCHAR(50) NOT NULL,       -- 연계 아이디 (FK)
    LINK_TYPE_CD            VARCHAR(20) NOT NULL,       -- 연계 유형 코드
    DMND_TYPE_CD            VARCHAR(20) NOT NULL,       -- 요청 유형 코드
    DMND_KEY_NM             VARCHAR(300) NOT NULL,      -- 요청 키 명
    DMND_VL_NM              VARCHAR(300),               -- 요청 값 명
    DMND_TY_NM              VARCHAR(100),               -- 요청 타입 명
    DMND_ESNTL_YN           CHAR(1) NOT NULL,           -- 요청 필수 여부
    FRST_REG_ID        VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT             TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID           VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT           TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_LINK_METDATA_DMND PRIMARY KEY (LINK_METDATA_DMND_SN),
    CONSTRAINT FK_LINK_METDATA_DMND_LINK FOREIGN KEY (LINK_ID) REFERENCES iccom.LINK(LINK_ID)
);

-- LINK_METDATA_DMND 테이블 주석
COMMENT ON TABLE iccom.LINK_METDATA_DMND IS '연계 메타데이터 요청 정보 테이블';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.LINK_METDATA_DMND_SN IS '연계 메타데이터 요청 일련번호 (PK)';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.LINK_ID IS '연계 아이디 (FK)';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.LINK_TYPE_CD IS '연계 유형 코드';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.DMND_TYPE_CD IS '요청 유형 코드';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.DMND_KEY_NM IS '요청 키 명';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.DMND_VL_NM IS '요청 값 명';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.DMND_TY_NM IS '요청 타입 명';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.DMND_ESNTL_YN IS '요청 필수 여부 (Y/N)';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.LINK_METDATA_DMND.LAST_MDFCN_DT IS '최종 수정 일시';


-- LINK_DATA_HOPR_HSTRY 테이블 생성
CREATE TABLE iccom.LINK_DATA_HOPR_HSTRY (
    LINK_DATA_HOPR_HSTRY_SN    NUMERIC(20) NOT NULL,       -- 이력 일련번호 (PK)
    PRCS_DT                    TIMESTAMP NOT NULL,         -- 처리 일시
    ATCH_FILE_ID               VARCHAR(50),                -- 첨부파일아이디
    HOPR_TYPE_CD               VARCHAR(20) NOT NULL,       -- 수동 유형 코드
    PROC_CNT                   NUMERIC(10) NOT NULL DEFAULT 0, -- 처리 건수
    PRCS_NOCS                  VARCHAR(20) NOT NULL,       -- 처리 상태코드
    RMRK_CN                    VARCHAR(4000),              -- 비고 내용
    FRST_REG_ID           VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT                TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID              VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT              TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_LINK_DATA_HOPR_HSTRY PRIMARY KEY (LINK_DATA_HOPR_HSTRY_SN)
);

-- LINK_DATA_HOPR_HSTRY 테이블 주석
COMMENT ON TABLE iccom.LINK_DATA_HOPR_HSTRY IS '연계 데이터 수동 처리 이력 테이블';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.LINK_DATA_HOPR_HSTRY_SN IS '이력 일련번호 (PK)';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.PRCS_DT IS '처리 일시';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.ATCH_FILE_ID IS '첨부파일아이디';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.HOPR_TYPE_CD IS '수동 유형 코드';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.PROC_CNT IS '처리 건수';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.PRCS_NOCS IS '처리 상태코드';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.RMRK_CN IS '비고 내용';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.LINK_DATA_HOPR_HSTRY.LAST_MDFCN_DT IS '최종 수정 일시';



-- CLCT_INTG_HSTRY 테이블 생성
CREATE TABLE iccom.CLCT_INTG_HSTRY (
    CLCT_HSTRY_SN    NUMERIC(20) NOT NULL,       -- 수집 이력 일련번호 (PK)
    JOB_ID                VARCHAR(100) NOT NULL,      -- 작업 아이디
    JOB_NM                VARCHAR(300) NOT NULL,      -- 작업 명
    DATA_SOURC_NM         VARCHAR(300) NOT NULL,      -- 데이터 소스 명
    EXCN_STCD             VARCHAR(20) NOT NULL,       -- 실행 상태코드
    PRCS_DATA_NOCS        NUMERIC(10) NOT NULL DEFAULT 0, -- 처리 데이터 건수
    SCS_NOCS              NUMERIC(10) NOT NULL DEFAULT 0, -- 성공 건수
    FAIL_NOCS             NUMERIC(10) NOT NULL DEFAULT 0, -- 실패 건수
    EXCN_DT               TIMESTAMP NOT NULL,         -- 실행 일시
    CMPTN_DT              TIMESTAMP,                  -- 완료 일시
    PRCS_HR               NUMERIC(10),                -- 처리 시간
    EXCN_ID               VARCHAR(100),               -- 실행 아이디
    EXCN_GROUP_NM         VARCHAR(300),               -- 실행 그룹 명
    MMRY_USQTY            NUMERIC(10),                -- 메모리 사용량
    CPU_LOAD_AVG          NUMERIC(5,2),               -- CPU 부하 평균
    FRST_REG_ID      VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT           TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID         VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT         TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CLCT_INTG_HSTRY PRIMARY KEY (CLCT_HSTRY_SN)
);

-- CLCT_INTG_HSTRY 테이블 주석
COMMENT ON TABLE iccom.CLCT_INTG_HSTRY IS '수집 통합 이력 테이블';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.CLCT_HSTRY_SN IS '수집 이력 일련번호 (PK)';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.JOB_ID IS '작업 아이디';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.JOB_NM IS '작업 명';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.DATA_SOURC_NM IS '데이터 소스 명';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.EXCN_STCD IS '실행 상태코드';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.PRCS_DATA_NOCS IS '처리 데이터 건수';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.SCS_NOCS IS '성공 건수';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.FAIL_NOCS IS '실패 건수';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.EXCN_DT IS '실행 일시';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.CMPTN_DT IS '완료 일시';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.PRCS_HR IS '처리 시간';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.EXCN_ID IS '실행 아이디';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.EXCN_GROUP_NM IS '실행 그룹 명';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.MMRY_USQTY IS '메모리 사용량';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.CPU_LOAD_AVG IS 'CPU 부하 평균';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CLCT_INTG_HSTRY.LAST_MDFCN_DT IS '최종 수정 일시';


-- CLCT_DALY_SMRY 테이블 생성
CREATE TABLE iccom.CLCT_DALY_SMRY (
    TOT_YMD              CHAR(8) NOT NULL,           -- 집계 일자 (PK)
    JOB_ID               VARCHAR(100) NOT NULL,      -- 작업 아이디 (PK)
    JOB_NM               VARCHAR(300) NOT NULL,      -- 작업 명
    DATA_SOURC_NM        VARCHAR(300) NOT NULL,      -- 데이터 소스 명
    EXCN_NMTM            NUMERIC(10) NOT NULL DEFAULT 0, -- 실행 횟수
    TPRCS_NOCS        NUMERIC(10) NOT NULL DEFAULT 0, -- 총 처리 건수
    TOT_SCS_NOCS         NUMERIC(10) NOT NULL DEFAULT 0, -- 총 성공 건수
    TOT_FAIL_NOCS        NUMERIC(10) NOT NULL DEFAULT 0, -- 총 실패 건수
    SCS_RPBLTY           NUMERIC(5,2),               -- 성공 확률
    AVG_PRCS_HR          NUMERIC(10),                -- 평균 처리시간
    P95_PRCS_HR          NUMERIC(10),                -- P95 처리시간
    MAX_PRCS_HR          NUMERIC(10),                -- 최대 처리시간
    AVG_MMRY             NUMERIC(10),                -- 평균 메모리
    MAX_MMRY             NUMERIC(10),                -- 최대 메모리
    AVG_CPU_LOAD         NUMERIC(10),                -- 평균 CPU 부하
    MAX_CPU_LOAD         NUMERIC(10),                -- 최대 CPU 부하
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CLCT_DALY_SMRY PRIMARY KEY (TOT_YMD, JOB_ID)
);

-- CLCT_DALY_SMRY 테이블 주석
COMMENT ON TABLE iccom.CLCT_DALY_SMRY IS '수집 일별 집계 테이블';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.TOT_YMD IS '집계 일자 (PK, YYYYMMDD)';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.JOB_ID IS '작업 아이디 (PK)';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.JOB_NM IS '작업 명';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.DATA_SOURC_NM IS '데이터 소스 명';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.EXCN_NMTM IS '실행 횟수';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.TPRCS_NOCS IS '총 처리 건수';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.TOT_SCS_NOCS IS '총 성공 건수';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.TOT_FAIL_NOCS IS '총 실패 건수';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.SCS_RPBLTY IS '성공 확률';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.AVG_PRCS_HR IS '평균 처리시간';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.P95_PRCS_HR IS 'P95 처리시간';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.MAX_PRCS_HR IS '최대 처리시간';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.AVG_MMRY IS '평균 메모리';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.MAX_MMRY IS '최대 메모리';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.AVG_CPU_LOAD IS '평균 CPU 부하';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.MAX_CPU_LOAD IS '최대 CPU 부하';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CLCT_DALY_SMRY.LAST_MDFCN_DT IS '최종 수정 일시';



-- CLCT_HSTRY 테이블 생성
CREATE TABLE iccom.CLCT_HSTRY (
    CLCT_HSTRY_SN        NUMERIC(20) NOT NULL,       -- 로그 일련번호 (PK)
    EXCN_ID              VARCHAR(100) NOT NULL,      -- 실행 아이디
    JOB_NM               VARCHAR(300) NOT NULL,      -- 작업 명
    JOB_EXPLN            VARCHAR(4000),              -- 작업 설명
    JOB_STCD             VARCHAR(20) NOT NULL,       -- 작업 상태코드
    BGNG_DT              TIMESTAMP NOT NULL,         -- 시작 일시
    END_DT               TIMESTAMP,                  -- 종료 일시
    PRCS_HR              NUMERIC(10),                -- 처리 시간
    EXCN_STCD            VARCHAR(20) NOT NULL,       -- 실행 상태코드
    PRCS_NOCS            NUMERIC(10) NOT NULL DEFAULT 0, -- 처리 건수
    SCS_NOCS             NUMERIC(10) NOT NULL DEFAULT 0, -- 성공 건수
    FAIL_NOCS            NUMERIC(10) NOT NULL DEFAULT 0, -- 실패 건수
    ERR_MSG              VARCHAR(4000),              -- 오류 메시지
    LOG_MSG              VARCHAR(4000),              -- 로그 메시지
    EXCN_HR              TIMESTAMP,                  -- 실행 시간
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CLCT_HSTRY PRIMARY KEY (CLCT_HSTRY_SN)
);

-- CLCT_HSTRY 테이블 주석
COMMENT ON TABLE iccom.CLCT_HSTRY IS '수집 이력 테이블';
COMMENT ON COLUMN iccom.CLCT_HSTRY.CLCT_HSTRY_SN IS '로그 일련번호 (PK)';
COMMENT ON COLUMN iccom.CLCT_HSTRY.EXCN_ID IS '실행 아이디';
COMMENT ON COLUMN iccom.CLCT_HSTRY.JOB_NM IS '작업 명';
COMMENT ON COLUMN iccom.CLCT_HSTRY.JOB_EXPLN IS '작업 설명';
COMMENT ON COLUMN iccom.CLCT_HSTRY.JOB_STCD IS '작업 상태코드';
COMMENT ON COLUMN iccom.CLCT_HSTRY.BGNG_DT IS '시작 일시';
COMMENT ON COLUMN iccom.CLCT_HSTRY.END_DT IS '종료 일시';
COMMENT ON COLUMN iccom.CLCT_HSTRY.PRCS_HR IS '처리 시간';
COMMENT ON COLUMN iccom.CLCT_HSTRY.EXCN_STCD IS '실행 상태코드';
COMMENT ON COLUMN iccom.CLCT_HSTRY.PRCS_NOCS IS '처리 건수';
COMMENT ON COLUMN iccom.CLCT_HSTRY.SCS_NOCS IS '성공 건수';
COMMENT ON COLUMN iccom.CLCT_HSTRY.FAIL_NOCS IS '실패 건수';
COMMENT ON COLUMN iccom.CLCT_HSTRY.ERR_MSG IS '오류 메시지';
COMMENT ON COLUMN iccom.CLCT_HSTRY.LOG_MSG IS '로그 메시지';
COMMENT ON COLUMN iccom.CLCT_HSTRY.EXCN_HR IS '실행 시간';
COMMENT ON COLUMN iccom.CLCT_HSTRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CLCT_HSTRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CLCT_HSTRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CLCT_HSTRY.LAST_MDFCN_DT IS '최종 수정 일시';



-- CLCT_REPO_QUEUE 테이블 생성
CREATE TABLE iccom.CLCT_REPO_QUEUE (
    CLCT_REPO_QUEUE_SN    NUMERIC(20) NOT NULL,       -- 큐 일련번호 (PK)
    FILE_PATH             VARCHAR(500) NOT NULL,      -- 파일 경로
    QUEUE_STCD            VARCHAR(20) NOT NULL DEFAULT 'PENDING', -- 큐 상태 코드
    JOB_ID                VARCHAR(100),               -- 작업 아이디
    JOB_NM                VARCHAR(300),               -- 작업 명
    DATA_SOURC_NM         VARCHAR(300),               -- 데이터 소스 명
    REG_DT                TIMESTAMP NOT NULL,         -- 등록 일시
    PRCS_DT               TIMESTAMP,                  -- 처리 일시
    RTRY_NMTM             NUMERIC(10) NOT NULL DEFAULT 0, -- 재시도 횟수
    ERR_MSG               VARCHAR(4000),              -- 오류 메시지
    LAST_RTRY_DT          TIMESTAMP,                  -- 최종 재시도 일시
    FRST_REG_ID      VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT           TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID         VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT         TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CLCT_REPO_QUEUE PRIMARY KEY (CLCT_REPO_QUEUE_SN)
);

-- CLCT_REPO_QUEUE 테이블 주석
COMMENT ON TABLE iccom.CLCT_REPO_QUEUE IS '수집 저장소 큐 테이블';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.CLCT_REPO_QUEUE_SN IS '큐 일련번호 (PK)';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.FILE_PATH IS '파일 경로';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.QUEUE_STCD IS '큐 상태 코드';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.JOB_ID IS '작업 아이디';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.JOB_NM IS '작업 명';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.DATA_SOURC_NM IS '데이터 소스 명';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.REG_DT IS '등록 일시';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.PRCS_DT IS '처리 일시';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.RTRY_NMTM IS '재시도 횟수';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.ERR_MSG IS '오류 메시지';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.LAST_RTRY_DT IS '최종 재시도 일시';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CLCT_REPO_QUEUE.LAST_MDFCN_DT IS '최종 수정 일시';



-- TMAP 테이블 생성
CREATE TABLE iccom.TMAP (
    TMAP_SN              NUMERIC(20) NOT NULL,       -- 주제도 일련번호 (PK)
    TMAP_NM              VARCHAR(300) NOT NULL,      -- 주제도 명
    TMAP_URL_ADDR        VARCHAR(500),               -- 주제도 URL 주소
    TMAP_EXPLN           VARCHAR(4000),              -- 주제도 설명
    BGNG_YMD             CHAR(8),                    -- 시작일자
    END_YMD              CHAR(8),                    -- 종료일자
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_TMAP PRIMARY KEY (TMAP_SN)
);

-- TMAP 테이블 주석
COMMENT ON TABLE iccom.TMAP IS '주제도 정보 테이블';
COMMENT ON COLUMN iccom.TMAP.TMAP_SN IS '주제도 일련번호 (PK)';
COMMENT ON COLUMN iccom.TMAP.TMAP_NM IS '주제도 명';
COMMENT ON COLUMN iccom.TMAP.TMAP_URL_ADDR IS '주제도 URL 주소';
COMMENT ON COLUMN iccom.TMAP.TMAP_EXPLN IS '주제도 설명';
COMMENT ON COLUMN iccom.TMAP.BGNG_YMD IS '시작일자 (YYYYMMDD)';
COMMENT ON COLUMN iccom.TMAP.END_YMD IS '종료일자 (YYYYMMDD)';
COMMENT ON COLUMN iccom.TMAP.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.TMAP.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.TMAP.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.TMAP.LAST_MDFCN_DT IS '최종 수정 일시';


-- MAP_SRVC 테이블 생성
CREATE TABLE iccom.MAP_SRVC (
    MAP_SRVC_SN          NUMERIC(20) NOT NULL,       -- 지도 서비스 일련번호 (PK)
    SRVC_NM              VARCHAR(300) NOT NULL,      -- 서비스 명
    LYR_NM               VARCHAR(300) NOT NULL,      -- 레이어 명
    LYR_EXPLN            VARCHAR(4000),              -- 레이어 설명
    PHYS_NM              VARCHAR(300) NOT NULL,      -- 물리 명
    SRVC_PREFIX_NM       VARCHAR(100),               -- 서비스 프리픽스 명
    LYR_GROUP_CD         VARCHAR(20) NOT NULL,       -- 레이어 그룹 코드
    LCLSF_CD             VARCHAR(20),                -- 대분류 코드
    MCLSF_CD             VARCHAR(20),                -- 중분류 코드
    SCLSF_CD             VARCHAR(20),                -- 소분류 코드
    CNTM_NM              VARCHAR(100),               -- 좌표계 명
    SPCE_TYPE_NM         VARCHAR(100),               -- 공간 유형 명
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_MAP_SRVC PRIMARY KEY (MAP_SRVC_SN)
);

-- MAP_SRVC 테이블 주석
COMMENT ON TABLE iccom.MAP_SRVC IS '지도 서비스 정보 테이블';
COMMENT ON COLUMN iccom.MAP_SRVC.MAP_SRVC_SN IS '지도 서비스 일련번호 (PK)';
COMMENT ON COLUMN iccom.MAP_SRVC.SRVC_NM IS '서비스 명';
COMMENT ON COLUMN iccom.MAP_SRVC.LYR_NM IS '레이어 명';
COMMENT ON COLUMN iccom.MAP_SRVC.LYR_EXPLN IS '레이어 설명';
COMMENT ON COLUMN iccom.MAP_SRVC.PHYS_NM IS '물리 명';
COMMENT ON COLUMN iccom.MAP_SRVC.SRVC_PREFIX_NM IS '서비스 프리픽스 명';
COMMENT ON COLUMN iccom.MAP_SRVC.LYR_GROUP_CD IS '레이어 그룹 코드';
COMMENT ON COLUMN iccom.MAP_SRVC.LCLSF_CD IS '대분류 코드';
COMMENT ON COLUMN iccom.MAP_SRVC.MCLSF_CD IS '중분류 코드';
COMMENT ON COLUMN iccom.MAP_SRVC.SCLSF_CD IS '소분류 코드';
COMMENT ON COLUMN iccom.MAP_SRVC.CNTM_NM IS '좌표계 명';
COMMENT ON COLUMN iccom.MAP_SRVC.SPCE_TYPE_NM IS '공간 유형 명';
COMMENT ON COLUMN iccom.MAP_SRVC.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.MAP_SRVC.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.MAP_SRVC.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.MAP_SRVC.LAST_MDFCN_DT IS '최종 수정 일시';


-- WEB_LOG 테이블 생성
CREATE TABLE iccom.WEB_LOG (
    WEB_LOG_SN           NUMERIC(20) NOT NULL,       -- 로그 일련번호 (PK)
    CNTN_DT              TIMESTAMP NOT NULL,         -- 접속 일시
    DMND_URL_ADDR        VARCHAR(500) NOT NULL,      -- 요청 URL 주소
    DMND_METH_CD         VARCHAR(20) NOT NULL,       -- 요청 메소드 코드
    SYS_CD               VARCHAR(20),                -- 시스템 코드
    SYS_NM               VARCHAR(300),               -- 시스템 명
    MENU_CD              VARCHAR(20),                -- 메뉴 코드
    MENU_NM              VARCHAR(300),               -- 메뉴 명
    USER_ID              VARCHAR(50),                -- 사용자 아이디
    USER_NM              VARCHAR(300),               -- 사용자 명
    DEPT_CD              VARCHAR(20),                -- 부서 코드
    DEPT_NM              VARCHAR(300),               -- 부서 명
    CNTN_IP              VARCHAR(50) NOT NULL,       -- 접속 IP
    SESION_ID            VARCHAR(100),               -- 세션 아이디
    RSPNS_STTS           NUMERIC(10),                -- 응답 상태
    PRCS_HR              NUMERIC(10),                -- 처리 시간
    USER_AGEN            VARCHAR(500),               -- 사용자 에이전트
    DMND_REFE            VARCHAR(500),               -- 요청 리퍼러
    DEVICE_TYPE_NM       VARCHAR(100),               -- 디바이스 유형 명
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_WEB_LOG PRIMARY KEY (WEB_LOG_SN)
);

-- WEB_LOG 테이블 주석
COMMENT ON TABLE iccom.WEB_LOG IS '웹 접속 로그 테이블';
COMMENT ON COLUMN iccom.WEB_LOG.WEB_LOG_SN IS '로그 일련번호 (PK)';
COMMENT ON COLUMN iccom.WEB_LOG.CNTN_DT IS '접속 일시';
COMMENT ON COLUMN iccom.WEB_LOG.DMND_URL_ADDR IS '요청 URL 주소';
COMMENT ON COLUMN iccom.WEB_LOG.DMND_METH_CD IS '요청 메소드 코드';
COMMENT ON COLUMN iccom.WEB_LOG.SYS_CD IS '시스템 코드';
COMMENT ON COLUMN iccom.WEB_LOG.SYS_NM IS '시스템 명';
COMMENT ON COLUMN iccom.WEB_LOG.MENU_CD IS '메뉴 코드';
COMMENT ON COLUMN iccom.WEB_LOG.MENU_NM IS '메뉴 명';
COMMENT ON COLUMN iccom.WEB_LOG.USER_ID IS '사용자 아이디';
COMMENT ON COLUMN iccom.WEB_LOG.USER_NM IS '사용자 명';
COMMENT ON COLUMN iccom.WEB_LOG.DEPT_CD IS '부서 코드';
COMMENT ON COLUMN iccom.WEB_LOG.DEPT_NM IS '부서 명';
COMMENT ON COLUMN iccom.WEB_LOG.CNTN_IP IS '접속 IP';
COMMENT ON COLUMN iccom.WEB_LOG.SESION_ID IS '세션 아이디';
COMMENT ON COLUMN iccom.WEB_LOG.RSPNS_STTS IS '응답 상태';
COMMENT ON COLUMN iccom.WEB_LOG.PRCS_HR IS '처리 시간';
COMMENT ON COLUMN iccom.WEB_LOG.USER_AGEN IS '사용자 에이전트';
COMMENT ON COLUMN iccom.WEB_LOG.DMND_REFE IS '요청 리퍼러';
COMMENT ON COLUMN iccom.WEB_LOG.DEVICE_TYPE_NM IS '디바이스 유형 명';
COMMENT ON COLUMN iccom.WEB_LOG.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.WEB_LOG.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.WEB_LOG.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.WEB_LOG.LAST_MDFCN_DT IS '최종 수정 일시';



-- CNTN_PRST_SMRY 테이블 생성
CREATE TABLE iccom.CNTN_PRST_SMRY (
    TOT_YMD              CHAR(8) NOT NULL,           -- 집계 일자 (PK)
    HR                   CHAR(2) NOT NULL,           -- 시간 (PK)
    SRVR_NM              VARCHAR(100),               -- 서버 명
    TOT_SESION_CNT       NUMERIC(10) NOT NULL DEFAULT 0, -- 총 세션 수
    NEW_SESION_CNT       NUMERIC(10) NOT NULL DEFAULT 0, -- 신규 세션 수
    END_SESION_CNT       NUMERIC(10) NOT NULL DEFAULT 0, -- 종료 세션 수
    TOT_CNT              NUMERIC(10) NOT NULL DEFAULT 0, -- 집계 수
    ACML_CNT             NUMERIC(10) NOT NULL DEFAULT 0, -- 누적 수
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CNTN_PRST_SMRY PRIMARY KEY (TOT_YMD, HR)
);

-- CNTN_PRST_SMRY 테이블 주석
COMMENT ON TABLE iccom.CNTN_PRST_SMRY IS '접속 현황 집계 테이블';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.TOT_YMD IS '집계 일자 (PK, YYYYMMDD)';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.HR IS '시간 (PK, 00-23)';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.SRVR_NM IS '서버 명';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.TOT_SESION_CNT IS '총 세션 수';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.NEW_SESION_CNT IS '신규 세션 수';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.END_SESION_CNT IS '종료 세션 수';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.TOT_CNT IS '집계 수';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.ACML_CNT IS '누적 수';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CNTN_PRST_SMRY.LAST_MDFCN_DT IS '최종 수정 일시';


-- CNTN_STATS_HR_SMRY 테이블 생성
CREATE TABLE iccom.CNTN_STATS_HR_SMRY (
    TOT_YMD              CHAR(8) NOT NULL,           -- 집계 일자 (PK)
    HR                   CHAR(2) NOT NULL,           -- 시간 (PK)
    USER_ID              VARCHAR(50) NOT NULL,       -- 사용자 아이디 (PK)
    USER_NM              VARCHAR(300),               -- 사용자 명
    DEPT_CD              VARCHAR(20),                -- 부서 코드
    DEPT_NM              VARCHAR(300),               -- 부서 명
    SYS_CD               VARCHAR(20),                -- 시스템 코드
    SYS_NM               VARCHAR(300),               -- 시스템 명
    MENU_CD              VARCHAR(20),                -- 메뉴 코드
    MENU_NM              VARCHAR(300),               -- 메뉴 명
    CNTN_CNT             NUMERIC(10) NOT NULL DEFAULT 0, -- 접속 수
    SESION_CNT           NUMERIC(10) NOT NULL DEFAULT 0, -- 세션 수
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_CNTN_STATS_HR_SMRY PRIMARY KEY (TOT_YMD, HR, USER_ID)
);

-- CNTN_STATS_HR_SMRY 테이블 주석
COMMENT ON TABLE iccom.CNTN_STATS_HR_SMRY IS '접속 통계 시간별 집계 테이블';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.TOT_YMD IS '집계 일자 (PK, YYYYMMDD)';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.HR IS '시간 (PK, 00-23)';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.USER_ID IS '사용자 아이디 (PK)';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.USER_NM IS '사용자 명';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.DEPT_CD IS '부서 코드';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.DEPT_NM IS '부서 명';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.SYS_CD IS '시스템 코드';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.SYS_NM IS '시스템 명';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.MENU_CD IS '메뉴 코드';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.MENU_NM IS '메뉴 명';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.CNTN_CNT IS '접속 수';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.SESION_CNT IS '세션 수';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.CNTN_STATS_HR_SMRY.LAST_MDFCN_DT IS '최종 수정 일시';


-- SRVY 테이블 생성
CREATE TABLE iccom.SRVY (
    SRVY_SN              NUMERIC(20) NOT NULL,       -- 설문 일련번호 (PK)
    SRVY_TTL             VARCHAR(500) NOT NULL,      -- 설문 제목
    SRVY_PRPS            VARCHAR(1000),              -- 설문 목적
    GD_CN                VARCHAR(4000),              -- 안내 내용
    TRGT_TYPE            VARCHAR(100),               -- 대상 유형
    SRVY_BGNG_YMD        CHAR(8) NOT NULL,           -- 설문 시작 일자
    SRVY_END_YMD         CHAR(8) NOT NULL,           -- 설문 종료 일자
    SRVY_URL_ADDR        VARCHAR(500),               -- 설문 URL 주소
    FRST_REG_ID     VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_SRVY PRIMARY KEY (SRVY_SN)
);

-- SRVY 테이블 주석
COMMENT ON TABLE iccom.SRVY IS '설문 정보 테이블';
COMMENT ON COLUMN iccom.SRVY.SRVY_SN IS '설문 일련번호 (PK)';
COMMENT ON COLUMN iccom.SRVY.SRVY_TTL IS '설문 제목';
COMMENT ON COLUMN iccom.SRVY.SRVY_PRPS IS '설문 목적';
COMMENT ON COLUMN iccom.SRVY.GD_CN IS '안내 내용';
COMMENT ON COLUMN iccom.SRVY.TRGT_TYPE IS '대상 유형';
COMMENT ON COLUMN iccom.SRVY.SRVY_BGNG_YMD IS '설문 시작 일자 (YYYYMMDD)';
COMMENT ON COLUMN iccom.SRVY.SRVY_END_YMD IS '설문 종료 일자 (YYYYMMDD)';
COMMENT ON COLUMN iccom.SRVY.SRVY_URL_ADDR IS '설문 URL 주소';
COMMENT ON COLUMN iccom.SRVY.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.SRVY.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SRVY.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.SRVY.LAST_MDFCN_DT IS '최종 수정 일시';


-- SRVY_QITEM 테이블 생성
CREATE TABLE iccom.SRVY_QITEM (
    QITEM_SN             NUMERIC(20) NOT NULL,       -- 문항 일련번호 (PK)
    SRVY_SN              NUMERIC(20) NOT NULL,       -- 설문 일련번호 (FK)
    ESNTL_YN             CHAR(1) NOT NULL,           -- 필수 여부
    SORT_SEQ             NUMERIC(10) NOT NULL DEFAULT 1, -- 정렬 순서
    QITEM_TYPE_CD        VARCHAR(20) NOT NULL,       -- 문항 유형 코드
    QITEM_CN             VARCHAR(4000) NOT NULL,     -- 문항 내용
    MAX_CHC_CO           NUMERIC(10) DEFAULT 1,      -- 최대 선택 개수
    FRST_REG_ID          VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT          TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID        VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT        TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_SRVY_QITEM PRIMARY KEY (QITEM_SN),
    CONSTRAINT FK_SRVY_QITEM_SRVY FOREIGN KEY (SRVY_SN) REFERENCES iccom.SRVY(SRVY_SN)
);

-- SRVY_QITEM 테이블 주석
COMMENT ON TABLE iccom.SRVY_QITEM IS '설문 문항 테이블';
COMMENT ON COLUMN iccom.SRVY_QITEM.QITEM_SN IS '문항 일련번호 (PK)';
COMMENT ON COLUMN iccom.SRVY_QITEM.SRVY_SN IS '설문 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_QITEM.ESNTL_YN IS '필수 여부 (Y/N)';
COMMENT ON COLUMN iccom.SRVY_QITEM.SORT_SEQ IS '정렬 순서';
COMMENT ON COLUMN iccom.SRVY_QITEM.QITEM_TYPE_CD IS '문항 유형 코드';
COMMENT ON COLUMN iccom.SRVY_QITEM.QITEM_CN IS '문항 내용';
COMMENT ON COLUMN iccom.SRVY_QITEM.MAX_CHC_CO IS '최대 선택 개수';
COMMENT ON COLUMN iccom.SRVY_QITEM.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.SRVY_QITEM.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SRVY_QITEM.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.SRVY_QITEM.LAST_MDFCN_DT IS '최종 수정 일시';


-- SRVY_QITEM_ARTCL 테이블 생성
CREATE TABLE iccom.SRVY_QITEM_ARTCL (
    ARTCL_SN              NUMERIC(20) NOT NULL,       -- 항목 일련번호 (PK)
    SRVY_SN               NUMERIC(20) NOT NULL,       -- 설문 일련번호 (FK)
    QITEM_SN              NUMERIC(20) NOT NULL,       -- 문항 일련번호 (FK)
    ETC_ANS_YN            CHAR(1) NOT NULL,           -- 기타 답변 여부
    SORT_SEQ              NUMERIC(10) NOT NULL DEFAULT 1, -- 정렬 순서
    ARTCL_CN              VARCHAR(4000) NOT NULL,     -- 항목 내용
    FRST_REG_ID           VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT           TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID         VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT         TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_SRVY_QITEM_ARTCL PRIMARY KEY (ARTCL_SN),
    CONSTRAINT FK_SRVY_QITEM_ARTCL_SRVY FOREIGN KEY (SRVY_SN) REFERENCES iccom.SRVY(SRVY_SN),
    CONSTRAINT FK_SRVY_QITEM_ARTCL_QITEM FOREIGN KEY (QITEM_SN) REFERENCES iccom.SRVY_QITEM(QITEM_SN)
);

-- SRVY_QITEM_ARTCL 테이블 주석
COMMENT ON TABLE iccom.SRVY_QITEM_ARTCL IS '설문 문항 항목 테이블';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.ARTCL_SN IS '항목 일련번호 (PK)';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.SRVY_SN IS '설문 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.QITEM_SN IS '문항 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.ETC_ANS_YN IS '기타 답변 여부 (Y/N)';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.SORT_SEQ IS '정렬 순서';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.ARTCL_CN IS '항목 내용';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.SRVY_QITEM_ARTCL.LAST_MDFCN_DT IS '최종 수정 일시';


-- SRVY_RSPDNT 테이블 생성
CREATE TABLE iccom.SRVY_RSPDNT (
    RSPDNT_SN             NUMERIC(20) NOT NULL,       -- 응답자 일련번호 (PK)
    SRVY_SN               NUMERIC(20) NOT NULL,       -- 설문 일련번호 (FK)
    RSPDNT_ID             VARCHAR(50) NOT NULL,       -- 응답자 아이디
    RSPDNT_NM             VARCHAR(300),               -- 응답자 명
    GNDR_CD               VARCHAR(20),                -- 성별 코드
    AGRDE_CD              VARCHAR(20),                -- 연령대 코드
    DEPT_CD               VARCHAR(20),                -- 부서 코드
    JBGD_CD               VARCHAR(20),                -- 직급 코드
    FRST_REG_ID           VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT           TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID         VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT         TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_SRVY_RSPDNT PRIMARY KEY (RSPDNT_SN),
    CONSTRAINT FK_SRVY_RSPDNT_SRVY FOREIGN KEY (SRVY_SN) REFERENCES iccom.SRVY(SRVY_SN)
);

-- SRVY_RSPDNT 테이블 주석
COMMENT ON TABLE iccom.SRVY_RSPDNT IS '설문 응답자 정보 테이블';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.RSPDNT_SN IS '응답자 일련번호 (PK)';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.SRVY_SN IS '설문 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.RSPDNT_ID IS '응답자 아이디';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.RSPDNT_NM IS '응답자 명';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.GNDR_CD IS '성별 코드';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.AGRDE_CD IS '연령대 코드';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.DEPT_CD IS '부서 코드';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.JBGD_CD IS '직급 코드';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.SRVY_RSPDNT.LAST_MDFCN_DT IS '최종 수정 일시';


-- SRVY_RSPNS 테이블 생성 (SRVY_RSPDNT 테이블 생성 후 실행)
CREATE TABLE iccom.SRVY_RSPNS (
    RSPNS_SN               NUMERIC(20) NOT NULL,       -- 응답 일련번호 (PK)
    SRVY_SN                NUMERIC(20) NOT NULL,       -- 설문 일련번호 (FK)
    QITEM_SN               NUMERIC(20) NOT NULL,       -- 문항 일련번호 (FK)
    RSPDNT_SN              NUMERIC(20) NOT NULL,       -- 응답자 일련번호 (FK)
    ARTCL_SN               NUMERIC(20),                -- 항목 일련번호 (FK)
    RSPNS_CN               VARCHAR(4000),              -- 응답 내용
    ETC_RSPNS_CN           VARCHAR(4000),              -- 기타 응답 내용
    FRST_REG_ID            VARCHAR(20) NOT NULL,       -- 최초 등록자 아이디
    FRST_REG_DT            TIMESTAMP,                  -- 최초 등록 일시
    LAST_MDFCN_ID          VARCHAR(20) NOT NULL,       -- 최종 수정자 아이디
    LAST_MDFCN_DT          TIMESTAMP,                  -- 최종 수정 일시
    CONSTRAINT PK_SRVY_RSPNS PRIMARY KEY (RSPNS_SN),
    CONSTRAINT FK_SRVY_RSPNS_SRVY FOREIGN KEY (SRVY_SN) REFERENCES iccom.SRVY(SRVY_SN),
    CONSTRAINT FK_SRVY_RSPNS_QITEM FOREIGN KEY (QITEM_SN) REFERENCES iccom.SRVY_QITEM(QITEM_SN),
    CONSTRAINT FK_SRVY_RSPNS_RSPDNT FOREIGN KEY (RSPDNT_SN) REFERENCES iccom.SRVY_RSPDNT(RSPDNT_SN),
    CONSTRAINT FK_SRVY_RSPNS_ARTCL FOREIGN KEY (ARTCL_SN) REFERENCES iccom.SRVY_QITEM_ARTCL(ARTCL_SN)
);

-- SRVY_RSPNS 테이블 주석
COMMENT ON TABLE iccom.SRVY_RSPNS IS '설문 응답 테이블';
COMMENT ON COLUMN iccom.SRVY_RSPNS.RSPNS_SN IS '응답 일련번호 (PK)';
COMMENT ON COLUMN iccom.SRVY_RSPNS.SRVY_SN IS '설문 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_RSPNS.QITEM_SN IS '문항 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_RSPNS.RSPDNT_SN IS '응답자 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_RSPNS.ARTCL_SN IS '항목 일련번호 (FK)';
COMMENT ON COLUMN iccom.SRVY_RSPNS.RSPNS_CN IS '응답 내용';
COMMENT ON COLUMN iccom.SRVY_RSPNS.ETC_RSPNS_CN IS '기타 응답 내용';
COMMENT ON COLUMN iccom.SRVY_RSPNS.FRST_REG_ID IS '최초 등록자 아이디';
COMMENT ON COLUMN iccom.SRVY_RSPNS.FRST_REG_DT IS '최초 등록 일시';
COMMENT ON COLUMN iccom.SRVY_RSPNS.LAST_MDFCN_ID IS '최종 수정자 아이디';
COMMENT ON COLUMN iccom.SRVY_RSPNS.LAST_MDFCN_DT IS '최종 수정 일시';

-- 추가 외래키 제약조건
ALTER TABLE iccom.TNEMPLYRSCRTYESTBS ADD CONSTRAINT SYS_FK_107 FOREIGN KEY(SCRTY_DTRMN_TRGET_ID) REFERENCES TNENTRPRSMBER(ENTRPRS_MBER_ID);
ALTER TABLE iccom.TNEMPLYRSCRTYESTBS ADD CONSTRAINT SYS_FK_110 FOREIGN KEY(SCRTY_DTRMN_TRGET_ID) REFERENCES TNGNRLMBER(MBER_ID);

-- 시퀀스 생성 (PostgreSQL용)
CREATE SEQUENCE terms_hstry_seq START 1000;
CREATE SEQUENCE user_role_aply_seq START 1;
CREATE SEQUENCE user_role_aply_hstry_seq START 1;

-- ============================================
-- 콘텐츠 통계 일별 GIS 요약
-- ============================================
CREATE TABLE iccom.CNTN_STATS_DALY_GIS_SMRY (
    TOT_YMD CHAR(8) NOT NULL,
    USER_ID VARCHAR(50) NOT NULL,
    USER_NM VARCHAR(300),
    DEPT_CD VARCHAR(20),
    DEPT_NM VARCHAR(300),
    FRST_REG_ID VARCHAR(20) NOT NULL,
    FRST_REG_DT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    LAST_MDFCN_ID VARCHAR(20) NOT NULL,
    LAST_MDFCN_DT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    IDCT_CD VARCHAR(20) NOT NULL,
    IDCT_WGHT_SCR NUMERIC(10,3) DEFAULT 0,
    RSLT_CNT NUMERIC(10,0) DEFAULT 0,
    RSLT_SCR NUMERIC(10,0) DEFAULT 0,
    CONSTRAINT cntn_stats_daly_gis_smry_pk PRIMARY KEY (TOT_YMD, USER_ID, IDCT_CD)
);

COMMENT ON TABLE iccom.CNTN_STATS_DALY_GIS_SMRY IS '콘텐츠통계일별GIS요약';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.TOT_YMD IS '집계일자';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.USER_ID IS '사용자아이디';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.USER_NM IS '사용자명';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.DEPT_CD IS '부서코드';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.DEPT_NM IS '부서명';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.FRST_REG_ID IS '최초등록아이디';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.FRST_REG_DT IS '최초등록일시';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.LAST_MDFCN_ID IS '최종수정아이디';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.LAST_MDFCN_DT IS '최종수정일시';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.IDCT_CD IS '지표코드';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.IDCT_WGHT_SCR IS '지표가중치점수';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.RSLT_CNT IS '결과건수';
COMMENT ON COLUMN iccom.CNTN_STATS_DALY_GIS_SMRY.RSLT_SCR IS '결과점수';

-- 인덱스 생성 (성능 최적화)
CREATE INDEX idx_com_cd_group_cd ON iccom.COM_CD(GROUP_CD);
CREATE INDEX idx_MENU_up_menu_cd ON iccom.MENU(UP_MENU_CD);
CREATE INDEX idx_trms_hstry_trms_id ON iccom.TRMS_HSTRY(TRMS_ID);
CREATE INDEX idx_tnbbs_bbs_id ON iccom.TNBBS(BBS_ID);
CREATE INDEX idx_tnfile_detail_atch_file_id ON iccom.TNFILEDETAIL(ATCH_FILE_ID);

-- PostgreSQL 전용 설정
-- 대소문자 구분하지 않는 검색을 위한 확장 (선택사항)
-- CREATE EXTENSION IF NOT EXISTS citext; 