Project

일반

사용자정보

2025/20.개발산출물/01.DB 설계 » iitp_db_schemas_init-deletion_and_creation_webPlatform.sql

이환희, 2025-12-19 05:01

 
1
-- ## iitp DB Schemas - Initial setup - Creation and Delete if tables exists 
2
-- ## ver 0.0.5 last updated data : 2025.10.02
3
-- ## Only for PostgreSQL
4
-- ## 장애인 자립 지원 허브 플랫폼 용 
5
-- ##
6

    
7

    
8

    
9

    
10
-- ################################################
11
-- ## 시스템 테이블 생성 
12
-- ###############################################
13

    
14

    
15
-- #### [주의] 통계 데이터 수집으로 sys_stats_src_api_info, stats_src_data_info 테이블의 데이터가 변경되면, sys_data_summary_info 테이블 데이터도 update 해야 함.
16
-- #### [주의] mv_poi, poi_*,  emp_dis_* 테이블의 데이터가 변경되면, sys_data_summary_info 테이블 데이터도 update 해야 함.
17

    
18
-- # public.sys_data_summary_info definition
19
DROP TABLE IF EXISTS public.sys_data_summary_info;
20

    
21

    
22
CREATE TABLE public.sys_data_summary_info (
23
	data_id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가)
24
	target_data_id int4, --  Target Data info sys ID, data_type 에 따라서 id 참조. 예) stats_src_data_info.src_data_id
25
	
26
	data_type varchar(16) NOT NULL, -- Data Type (basic/poi/emp) 
27
    self_rlty_type varchar(24),      -- 자립 테마 타입 (phys,emo, econ,soc)
28
	category varchar(24),           -- 카테고리 (기초, 신체 자립 현황, 의료 자립현황, 보조기기 사용 현황, 진로 교육 현황, 고용 현황, 사회망 현황, ...)
29
	
30
	title varchar(300) NOT NULL, -- 데이터명
31
	sys_tbl_id varchar(40) NOT NULL, -- iitp 데이터 테이블 ID
32
	
33
	src_org_name varchar(50) NOT NULL,      -- 데이터 제공처(기관명)
34
	src_latest_chn_dt varchar(12) NOT NULL, -- 수집기관 최종 자료갱신일 (예:2024-07-19)
35
	
36
	sys_data_ref_dt varchar(12) NULL, 		-- 데이터를 iitp 시스템에서 마지막 수집/참조 일자 (예:2024-07-19)
37
	sys_data_reg_dt varchar(12) NOT NULL,   -- 데이터를 iitp 시스템에 등록한 일자 (예:2024-07-19) 
38
	
39
	data_keywords varchar(220),        -- 데이터 키워드 (최대 3개), 데이터 포맷 :: [,,] 형식
40
	data_format varchar(60),            -- 제공 데이터 포맷 ([csv, json])
41
	
42
	data_desc varchar(300),            -- 데이터 설명
43
	data_usage_scope varchar(300),     -- 이용 데이터 범위 설명
44
	
45
	open_api_url varchar(300) NOT NULL, -- open api req url
46
	
47
	status char(1) DEFAULT 'A'  NOT NULL, -- 데이터 상태,  "data_status" comm code 참조
48
	del_yn char(1) DEFAULT 'N'::bpchar NOT NULL, -- 삭제여부 (Y: 삭제)
49
	
50
	created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 레코드 생성 시각
51
	updated_at timestamptz DEFAULT CURRENT_TIMESTAMP, -- 레코드 수정 시각
52
	deleted_at timestamptz NULL, -- 삭제 일시 (논리 삭제 시 기록)
53
	CONSTRAINT pkey_sys_data_sumary_info PRIMARY KEY (data_id)
54
);
55
CREATE UNIQUE INDEX uidx_sys_data_sumary_info_sys_tbl_id ON public.sys_data_summary_info USING btree (sys_tbl_id);
56
CREATE INDEX  idx_sys_data_sumary_info_title ON public.sys_data_summary_info USING btree (title);
57
CREATE INDEX  idx_sys_data_sumary_info_data_type ON public.sys_data_summary_info USING btree (data_type);
58
CREATE INDEX  idx_sys_data_sumary_info_self_rlty_type ON public.sys_data_summary_info USING btree (self_rlty_type);
59

    
60

    
61

    
62
COMMENT ON TABLE public.sys_data_summary_info IS 'IITP 전체 데이터별 요약 정보';
63

    
64
-- Column comments
65
COMMENT ON COLUMN public.sys_data_summary_info.data_id IS 'system id, 고유 식별자 (자동 증가)';
66
COMMENT ON COLUMN public.sys_data_summary_info.target_data_id IS 'Target Data info sys ID, target_data_type 에 따라서 id 참조. 예) stats_src_data_info.src_data_id';
67

    
68
COMMENT ON COLUMN public.sys_data_summary_info.data_type IS 'Target Data Type (basic/poi/emp)';
69
COMMENT ON COLUMN public.sys_data_summary_info.self_rlty_type IS '자립 테마 타입 (phys,emo, econo,soc)';
70
COMMENT ON COLUMN public.sys_data_summary_info.category IS '카테고리 (기초, 신체 자립 현황, 의료 자립현황, 보조기기 사용 현황, 진로 교육 현황, 고용 현황, 사회망 현황, ...)';
71

    
72

    
73
COMMENT ON COLUMN public.sys_data_summary_info.title IS '데이터명';
74
COMMENT ON COLUMN public.sys_data_summary_info.sys_tbl_id IS 'iitp 데이터 목록 테이블 ID';
75

    
76
COMMENT ON COLUMN public.sys_data_summary_info.src_org_name IS '데이터 제공처(기관명)';
77
COMMENT ON COLUMN public.sys_data_summary_info.src_latest_chn_dt IS '수집기관 최종 자료갱신일 (예:2024-07-19)';
78

    
79
COMMENT ON COLUMN public.sys_data_summary_info.sys_data_ref_dt IS '데이터를 iitp 시스템에서 마지막 수집/참조 일자 (예:2024-07-19)';
80
COMMENT ON COLUMN public.sys_data_summary_info.sys_data_reg_dt IS '데이터를 iitp 시스템에 등록한 일자 (예:2024-07-19)';
81

    
82
COMMENT ON COLUMN public.sys_data_summary_info.data_keywords IS '데이터 키워드 (최대 3개), 데이터 포맷 :: [,,] 형식';
83
COMMENT ON COLUMN public.sys_data_summary_info.data_format IS '제공 데이터 포맷 ([csv, json])';
84

    
85
COMMENT ON COLUMN public.sys_data_summary_info.data_desc IS '데이터 설명';
86
COMMENT ON COLUMN public.sys_data_summary_info.data_usage_scope IS '이용 데이터 범위 설명';
87

    
88
COMMENT ON COLUMN public.sys_data_summary_info.open_api_url IS 'open api req url';
89

    
90
COMMENT ON COLUMN public.sys_data_summary_info.status IS '"data_status" comm code 참조';
91
COMMENT ON COLUMN public.sys_data_summary_info.del_yn IS '삭제여부 (Y: 삭제)';
92

    
93
COMMENT ON COLUMN public.sys_data_summary_info.created_at IS '레코드 생성 시각';
94
COMMENT ON COLUMN public.sys_data_summary_info.updated_at IS '레코드 수정 시각';
95
COMMENT ON COLUMN public.sys_data_summary_info.deleted_at IS '삭제 일시 (논리 삭제 시 기록)';
96

    
97

    
98

    
99

    
100
-- # public.selfdiag_data_category definition
101
DROP TABLE IF EXISTS public.selfdiag_data_category;
102

    
103
CREATE TABLE selfdiag_data_category (
104
    id          SERIAL PRIMARY KEY,
105
    category    VARCHAR(50) NOT NULL,  -- 카테고리: theme, data_type
106
    name        VARCHAR(100) NOT NULL,  -- 카테고리명: 자립테마별, 데이터 유형별
107
    menu_id     VARCHAR(50) NOT NULL,  -- 메뉴 id (theme : phy,emo, econ,soc, data_type : basic, poi, emp)
108
    menu_name   VARCHAR(100) NOT NULL, -- 메뉴 항목명: 신체적 자립, 정서적 자립 등
109
	
110
    description VARCHAR(600) NOT NULL,  -- 메뉴별 간단한 설명
111
    created_at  timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
112
    updated_at  timestamptz 
113
);
114

    
115
COMMENT ON TABLE public.selfdiag_data_category IS 'IITP 데이터 테이블 분류 정보';
116

    
117
-- 컬럼 설명 추가
118
COMMENT ON COLUMN selfdiag_data_category.category IS '카테고리: theme, data_type';
119
COMMENT ON COLUMN selfdiag_data_category.name IS '카테고리명: 자립테마별, 데이터 유형별, ';
120
COMMENT ON COLUMN selfdiag_data_category.menu_id IS '메뉴 id (theme : phy,emo, econ,soc, data_type : basic, poi, emp)';
121
COMMENT ON COLUMN selfdiag_data_category.menu_name IS '메뉴 항목명: 신체적 자립, 정서적 자립 등';
122
COMMENT ON COLUMN selfdiag_data_category.description IS '메뉴별 상세 설명';
123
COMMENT ON COLUMN selfdiag_data_category.created_at IS '데이터 생성일';
124
COMMENT ON COLUMN selfdiag_data_category.updated_at IS '데이터 수정일';
125

    
126
-- 샘플 데이터 INSERT
127
INSERT INTO selfdiag_data_category (category, name, menu_id, menu_name, description)
128
VALUES
129
('theme', '자립테마별', 'phys', '신체적 자립', '신체적 자립 수준 및 건강 상태 등 신체 기능과 관련된 데이터'),
130
('theme', '자립테마별', 'emo', '정서적 자립', '심리적 안정 및 지원 등 정서 안정과 관련된 데이터'),
131
('theme', '자립테마별', 'econ', '경제적 자립', '장애인 진로교육 및 고용 현황 등 일자리와 관련된 데이터'),
132
('theme', '자립테마별', 'soc', '사회적 자립', '사회복지시설 및 지역사회 참여 현황 등 사회적 기능과 관련된 데이터'),
133
('data_type', '데이터 유형별', 'basic', '기초 데이터', '장애인과 관련된 기본 통계 및 기초 자료'),
134
('data_type', '데이터 유형별', 'poi', '이동권 데이터', '교통·보행 등 장애인 이동 및 접근성과 관련된 자료'),
135
('data_type', '데이터 유형별', 'emp', '일자리 데이터', '고용 현황, 취업 지원, 직업 활동과 관련된 자료'),
136
('self_rlty_type', '자립유형', 'basic', '기초', '기본 적인 장애 자립 관련 정보(정책, 기관, 시설)'),
137
('self_rlty_type', '자립유형', 'phys', '신체', '신체적 자립 관련 정보 (정책, 기관, 시설)'),
138
('self_rlty_type', '자립유형', 'emo', '정서', '정서적 자립 관련된 정보 (정책, 기관, 시설)'),
139
('self_rlty_type', '자립유형', 'econ', '경제', '경제적 자립 관련된 정보 (정책, 기관, 시설)'),
140
('self_rlty_type', '자립유형', 'soc', '사회', '사회적 자립 관련된 정보 (정책, 기관, 시설)');
141

    
142

    
143

    
144

    
145

    
146

    
147

    
148
-- # public.selfdiag_policy definition
149
DROP TABLE IF EXISTS public.selfdiag_policy;
150

    
151
CREATE TABLE selfdiag_policy (
152
    policy_id       SERIAL PRIMARY KEY,                 -- PK
153
    category        VARCHAR(90) NOT NULL,                  -- 구분 (예: 생활 안정 지원, 생활요금 감면)
154
    policy_name     VARCHAR(300) NOT NULL,                 -- 항목명 (예: 장애인연금, 장애수당)
155
    self_rlty_type  VARCHAR(50),                           -- 관련 자립 유형 (기초, 신체, 경제, 정서, 사회 등)
156
    region          VARCHAR(100),                          -- 사업 단위 (전국, 시군구 등)
157
    gender          VARCHAR(50),                           -- 대상 성별 (남성, 여성, "여성, 남성")
158
    age_cond        VARCHAR(50),                           -- 연령 조건 (minor=미성년자, adult=성인, all=미성년+성인')
159
    dis_level       VARCHAR(50),                           -- 장애 정도 (중증, 경증)
160
    fin_cond        VARCHAR(100),                          -- 재정 조건 (중위소득 50~100% 등)
161
    target          VARCHAR(3000),                                  -- 대상자 설명
162
    benefit         VARCHAR(6000),                                  -- 지원 내용 설명
163
    link            VARCHAR(512),                                  -- 상세 이동 링크(URL)
164
    created_at      timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,               -- 생성 시각
165
    updated_at      timestamptz                 -- 수정 시각
166
);
167

    
168
-- COMMENT 구문
169
COMMENT ON TABLE selfdiag_policy IS '장애인 자립 자가진단 - 정책·서비스 정보';
170

    
171
COMMENT ON COLUMN selfdiag_policy.policy_id IS 'PK: 데이터 고유 ID';
172
COMMENT ON COLUMN selfdiag_policy.category IS '지원 구분 (생활 안정 지원, 생활요금 감면 등)';
173
COMMENT ON COLUMN selfdiag_policy.policy_name IS '지원 항목명 (장애인연금, 장애수당 등)';
174
COMMENT ON COLUMN selfdiag_policy.self_rlty_type IS '관련 자립 유형 (기초, 신체, 경제, 정서, 사회 등)';
175
COMMENT ON COLUMN selfdiag_policy.region IS '사업 단위 (전국, 시/군/구 등)';
176
COMMENT ON COLUMN selfdiag_policy.gender IS '성별 조건 (여성, 남성, "여성, 남성")';
177
COMMENT ON COLUMN selfdiag_policy.age_cond IS '연령 조건 (minor=미성년자, adult=성인, all=미성년+성인)';
178
COMMENT ON COLUMN selfdiag_policy.dis_level IS '장애 정도 조건 (중증, 경증, 혼합)';
179
COMMENT ON COLUMN selfdiag_policy.fin_cond IS '재정 조건 (중위소득 기준 등)';
180
COMMENT ON COLUMN selfdiag_policy.target IS '대상자 상세 설명';
181
COMMENT ON COLUMN selfdiag_policy.benefit IS '지원 내용 상세';
182
COMMENT ON COLUMN selfdiag_policy.link IS '상세 페이지 URL';
183
COMMENT ON COLUMN selfdiag_policy.created_at IS '데이터 생성 시각';
184
COMMENT ON COLUMN selfdiag_policy.updated_at IS '데이터 최종 수정 시각';
185

    
186

    
187

    
188

    
189
-- # public.selfdiag_provider definition
190
DROP TABLE IF EXISTS public.selfdiag_provider;
191

    
192
CREATE TABLE selfdiag_provider (
193
    provider_id         SERIAL PRIMARY KEY,           -- PK
194
    provider_name       VARCHAR(200) NOT NULL,           -- 제공기관명 (지점명까지 포함)
195
    service_name        VARCHAR(200) NOT NULL,           -- 제공 서비스명
196
    address             VARCHAR(300) NOT NULL,           -- 주소 (시군구 + 상세주소 포함)
197
    phone               VARCHAR(50),                    -- 전화번호
198
    rep_name 			VARCHAR(100),                   -- 대표자명 (선택 입력)
199
    description         VARCHAR(900),                           -- 비고/기관 상세설명
200
    created_at           timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 생성일시
201
    updated_at           timestamptz                       -- 수정일시
202
);
203

    
204
COMMENT ON TABLE selfdiag_provider IS '장애인 자립 자가진단 - 정책 제공 기관(Provider) 정보 테이블';
205

    
206
COMMENT ON COLUMN selfdiag_provider.provider_id IS 'PK, 제공 기관 식별자';
207
COMMENT ON COLUMN selfdiag_provider.provider_name IS '제공기관명 (지점명 포함)';
208
COMMENT ON COLUMN selfdiag_provider.service_name IS '해당 기관이 제공하는 서비스명';
209
COMMENT ON COLUMN selfdiag_provider.address IS '기관 주소 (시군구, 상세주소 포함)';
210
COMMENT ON COLUMN selfdiag_provider.phone IS '기관 전화번호';
211
COMMENT ON COLUMN selfdiag_provider.rep_name IS '대표자명';
212
COMMENT ON COLUMN selfdiag_provider.description IS '기관 및 서비스에 대한 상세 설명, 비고';
213
COMMENT ON COLUMN selfdiag_provider.created_at IS '데이터 생성일시';
214
COMMENT ON COLUMN selfdiag_provider.updated_at IS '데이터 최종 수정일시';
215

    
216

    
217

    
218

    
219

    
220

    
221

    
222
-- # public.selfdiag_facility definition
223
DROP TABLE IF EXISTS public.selfdiag_facility;
224

    
225
CREATE TABLE selfdiag_facility (
226
    facility_id       SERIAL PRIMARY KEY,
227
    device           VARCHAR(300), -- 설치 기기
228
    install_area     VARCHAR(100),          -- 설치 지역
229
    install_site     VARCHAR(300),          -- 설치 장소
230
    install_spot     VARCHAR(300),          -- 설치 위치 (건물 내 위치 등)
231
    hang_dong        VARCHAR(60),           -- 행정동
232
    address           VARCHAR(300),          -- 상세 주소
233
    opening_hours     VARCHAR(300),          -- 이용 시간
234
    quantity          INT DEFAULT 0,                   -- 설치 대수
235
    note              VARCHAR(900),                  -- 비고
236
    created_at         timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
237
    updated_at         timestamptz
238
);
239

    
240
COMMENT ON TABLE selfdiag_provider IS '장애인 자립 자가진단 - 정책 제공 시설(facility) 정보 테이블';
241

    
242
COMMENT ON COLUMN selfdiag_facility.facility_id IS 'PK, 설치 기기 식별자';
243
COMMENT ON COLUMN selfdiag_facility.device            IS '설치 기기명';
244
COMMENT ON COLUMN selfdiag_facility.install_area          IS '설치 지역(시/구)';
245
COMMENT ON COLUMN selfdiag_facility.install_site             IS '설치 장소명';
246
COMMENT ON COLUMN selfdiag_facility.install_spot   IS '건물 내 설치 위치 상세';
247
COMMENT ON COLUMN selfdiag_facility.hang_dong        IS '행정동';
248
COMMENT ON COLUMN selfdiag_facility.address           IS '상세 주소';
249
COMMENT ON COLUMN selfdiag_facility.opening_hours     IS '이용 시간';
250
COMMENT ON COLUMN selfdiag_facility.quantity          IS '설치 대수';
251
COMMENT ON COLUMN selfdiag_facility.note              IS '비고';
252
COMMENT ON COLUMN selfdiag_facility.created_at IS '데이터 생성일시';
253
COMMENT ON COLUMN selfdiag_facility.updated_at IS '데이터 최종 수정일시';
254

    
255

    
256

    
257

    
258

    
259

    
260

    
(8-8/11)