Tenant 스키마 ERD
개요
V18 이후 모든 테넌트 스코프 테이블은 public 스키마에 있습니다. Schema-per-tenant(tenant_{slug}) 전략은 제거되었습니다. 각 테이블에 tenant_id BIGINT NOT NULL과 FORCE ROW LEVEL SECURITY 정책이 적용됩니다.
V26에서 admins → staff, admin_permissions → staff_permissions로 리네임되었습니다.
복잡도가 높아 도메인 그룹별로 분리해서 표시합니다.
1. 사용자 + 권한
2. 수업 + 수강 + 강의
3. 과제
4. 시험 + OMR 채점
5. 출결 + 상담
6. 과제 + 콘텐츠 (공지/QnA)
7. AI + 홈페이지 + 파일 + 활동 로그
8. SMS + 교재 + 수납
주요 마이그레이션 이력
| 버전 | 변경 |
|---|---|
| V18 | RLS baseline — schema-per-tenant 완전 제거, 모든 테넌트 테이블을 public에 통합, RLS 정책 일괄 적용 |
| V19 | activity_logs enum 컬럼 전환 |
| V24 | 도메인 엔티티 version 컬럼 추가 |
| V26 | admins → staff, admin_permissions → staff_permissions |
| V29 | 수납 테이블 추가 |
| V40 | omr_grading_jobs.version |
| V41 | exam_results.omr_grading_job_id |
| V43 | qna_boards.category_name |
| V44 | exam_ai_analyses |
| V45 | student_ai_feedbacks |
| V46 | homepage_config singleton 인덱스 수정 |
| V52 | attendance_sessions(class_id, session_date) UNIQUE |
| V53 | attendance_records.status DEFAULT PENDING |