콘텐츠로 이동

운영 DB 스키마 (DDL)

MySQL 8(utf8mb4). 전체 DDL은 raw 운영-DB-DDL 참조. ERD: theEdu (erdcloud). 여긴 구조 요약(자격증명 없음).

1. 테이블 ↔ 도메인 매핑

테이블 도메인 핵심 컬럼 / 비고
member teams/engineering/domains/member 단일 테이블 상속(DTYPE), email UNIQUE, role enum(ADMIN/PARENT/STUDENT/TEACHER)
connection teams/engineering/domains/member requester_id/recipient_id → member, state enum, accepted_date
study_room teams/engineering/domains/studyroom teacher_id FK, visibility/modality/class_form/subject_type/school_level, capacity
study_room_student teams/engineering/domains/studyroom student_id/study_room_id, state enum(APPROVED/PENDING/REJECTED/TERMINATED)
teaching_note_group teams/engineering/domains/teaching-note study_room_id FK (ON DELETE CASCADE)
teaching_note teams/engineering/domains/teaching-note visibility enum(6단계), view_count, group FK (ON DELETE SET NULL)
teaching_note_student teams/engineering/domains/teaching-note 특정 학생 공개 매핑
teaching_note_image teams/engineering/domains/teaching-note image_id UNIQUE, s3key, mime_type, size_bytes
notification (Notification) type enum(CONNECTION_REQUEST/SYSTEM), recipient_id, is_read, target_id

2. 공통 규약

  • 모든 테이블 reg_date/mod_date(datetime(6)) — BaseEntity 상속
  • 소프트 딜리트는 deleted_at 기반 (teams/engineering/guides/soft-delete). DDL에 따라 일부는 FK CASCADE
  • state enum(APPROVED/PENDING/REJECTED/TERMINATED)을 study_room_student·connection이 공유

3. 공유 enum

  • Connection/StudyRoomStudent state: PENDING → APPROVED | REJECTED | TERMINATED
  • TeachingNote visibility: TEACHER_ONLY · SPECIFIC_STUDENTS_ONLY · SPECIFIC_STUDENTS_AND_PARENTS · STUDY_ROOM_STUDENTS_ONLY · STUDY_ROOM_STUDENTS_AND_PARENTS · PUBLIC
  • Notification type: CONNECTION_REQUEST · SYSTEM

4. 관련