복지나침반 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 타입 필요