-- 새로운 워크플로우에 맞게 DB 구조 최적화 -- 1. due_date를 start_date로 변경 ALTER TABLE todos RENAME COLUMN due_date TO start_date; -- 2. tags 컬럼 제거 (사용하지 않음) ALTER TABLE todos DROP COLUMN IF EXISTS tags; -- 3. category 기본값 변경 및 기존 데이터 정리 -- 기존 'checklist' 카테고리를 'memo'로 변경 UPDATE todos SET category = 'memo' WHERE category = 'checklist'; -- 기존 'calendar' 카테고리를 'todo'로 변경 UPDATE todos SET category = 'todo' WHERE category = 'calendar'; -- 4. title을 nullable로 변경 (메모의 경우 선택사항) ALTER TABLE todos ALTER COLUMN title DROP NOT NULL; -- 5. description을 NOT NULL로 변경 (내용은 필수) UPDATE todos SET description = COALESCE(title, '내용 없음') WHERE description IS NULL OR description = ''; ALTER TABLE todos ALTER COLUMN description SET NOT NULL; -- 6. category 기본값을 'memo'로 설정 ALTER TABLE todos ALTER COLUMN category SET DEFAULT 'memo'; -- 7. 불필요한 인덱스 정리 및 새로운 인덱스 추가 -- 기존 due_date 인덱스 제거 (컬럼명이 변경됨) DROP INDEX IF EXISTS idx_todos_due_date; -- 새로운 인덱스 생성 CREATE INDEX IF NOT EXISTS idx_todos_start_date ON todos(start_date); CREATE INDEX IF NOT EXISTS idx_todos_category_status ON todos(category, status); CREATE INDEX IF NOT EXISTS idx_todos_user_category ON todos(user_id, category); -- 8. 성능 최적화를 위한 복합 인덱스 CREATE INDEX IF NOT EXISTS idx_todos_workflow ON todos(user_id, category, status, start_date); COMMIT;