복지나침반 DB 스키마
개요
| 항목 |
내용 |
| DBMS |
PostgreSQL 15 |
| 설계 원칙 |
RDB = Ground Truth, Vector DB = 검색용 인덱스 |
ERD
┌─────────────────┐ ┌─────────────────┐
│ Category │ │ Policy │
├─────────────────┤ ├─────────────────┤
│ id (PK) │ │ plcy_no (PK) │
│ name │ │ plcy_nm │
└────────┬────────┘ │ plcy_expln │
│ │ plcy_sprt_cn │
│ │ min_age │
│ M:N │ max_age │
│ │ ... │
▼ │ district │
┌─────────────────┐ │ created_at │
│ PolicyCategory │ │ updated_at │
├─────────────────┤ └────────┬────────┘
│ policy_id (FK) │────────────────┘
│ category_id (FK)│
└─────────────────┘
테이블 상세
Policy (정책)
| 컬럼명 |
타입 |
설명 |
비고 |
| plcy_no |
VARCHAR(30) |
정책번호 |
PK, 온통청년 원본 ID |
| plcy_nm |
VARCHAR(200) |
정책명 |
|
| plcy_expln |
TEXT |
정책설명 (요약) |
|
| plcy_sprt_cn |
TEXT |
지원내용 |
|
| min_age |
INTEGER |
최소나이 |
NULL 허용 |
| max_age |
INTEGER |
최대나이 |
NULL 허용 |
| age_limit_yn |
CHAR(1) |
나이제한여부 |
Y/N |
| earn_cnd_cd |
VARCHAR(20) |
소득조건코드 |
NULL 허용 |
| earn_min_amt |
INTEGER |
소득최소 |
NULL 허용 |
| earn_max_amt |
INTEGER |
소득최대 |
NULL 허용 |
| mrg_stts_cd |
VARCHAR(20) |
결혼상태코드 |
NULL 허용 |
| job_cd |
VARCHAR(20) |
취업요건코드 |
NULL 허용 |
| school_cd |
VARCHAR(20) |
학력요건코드 |
NULL 허용 |
| aply_start_dt |
DATE |
신청시작일 |
NULL 허용 |
| aply_end_dt |
DATE |
신청마감일 |
NULL 허용 |
| aply_mthd_cn |
TEXT |
신청방법 |
|
| aply_url |
VARCHAR(500) |
신청URL |
|
| district |
VARCHAR(20) |
자치구 |
"은평구" 또는 NULL(전체) |
| created_at |
TIMESTAMP |
등록일 |
|
| updated_at |
TIMESTAMP |
수정일 |
|
Category (카테고리)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK (auto increment) |
| name |
VARCHAR(20) |
카테고리명 |
초기 데이터: 복지문화, 일자리, 교육, 주거, 참여권리, 기타
PolicyCategory (정책-카테고리 매핑)
| 컬럼명 |
타입 |
설명 |
| policy_id |
VARCHAR(30) |
FK → Policy.plcy_no |
| category_id |
INTEGER |
FK → Category.id |
복합 PK: (policy_id, category_id)
설계 결정 사항
| 항목 |
결정 |
이유 |
| PK |
plcyNo 사용 |
온통청년 API 동기화 시 매핑 용이 |
| 카테고리 |
M:N 관계 |
하나의 정책이 여러 카테고리 가질 수 있음 |
| 지역 |
단일 값 |
"서울특별시 ○○구" → "○○구" 파싱, NULL이면 전체 |
| 신청기간 |
두 컬럼 분리 |
마감임박 정렬/필터링 위해 DATE 타입 필요 |