-- 179_study_topics.sql (1/6) -- 학습 주제(study_topic) — 학습 워크스페이스 1차 컨테이너. -- 필기 세션 + 자료(library document)를 한 주제(예: 가스기사) 아래로 묶는다. -- -- 핵심 개념: -- - 단순 폴더/태그가 아닌 학습 워크스페이스 컨테이너 (향후 단어장/오디오/문제세트 등 자산이 같은 컨테이너로 들어옴). -- - documents.category(자료실 UI 축) 와 직교. 자료실 facet/카테고리는 건드리지 않는다. -- - study_sessions.certification/subject/topic 컬럼은 보존, 본 컨테이너 와 직교한 세부 메타로 계속 사용. -- -- study_type 권장값: certification / language / school / work / general. -- 백엔드는 강한 enum 으로 강제하지 않음 (DB 제약 / Pydantic Literal 모두 사용 금지). -- 어학 세부(jlpt_n3 등) 같은 분류 확장 여지 확보. -- -- soft delete (deleted_at): 묶음 해제 시 매핑·세션 보호. -- partial unique index (180) 가 active 행끼리만 중복 방지 → 삭제된 주제명 재사용 가능. CREATE TABLE IF NOT EXISTS study_topics ( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, name VARCHAR(120) NOT NULL, description TEXT, color VARCHAR(20), study_type VARCHAR(40), sort_order INTEGER NOT NULL DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), deleted_at TIMESTAMPTZ );