1. 🔵 User (회원)

필드명 타입 설명
id Long PK
studentId String 학번 (로그인용, unique)
name String 이름
password String 암호화된 비밀번호
major String 전공

2. 🟢 Subject (과목)

필드명 타입 설명
id Long PK
name String 과목 이름
type Enum (전공/교양) 과목 유형
major String (nullable) 전공 과목일 경우만 사용

🔁 사용자 전공과 subject.major가 일치하면 전공 과목으로 조회됨.


3. 🟡 Schedule (내 일정)

필드명 타입 설명
id Long PK
user_id Long FK → User
title String 일정 제목
type Enum (과제/시험/발표) 일정 유형
subjectName String 과목명 (등록된 과목 중 선택)
date LocalDate 일정 날짜
dDayNotified boolean D-7 알림 여부 (기본 false)

🧩 관계 설명

✨ ERD 시각화 요약

User
 ├─ id (PK)
 ├─ studentId (unique)
 ├─ name
 ├─ password
 └─ major
      │
      │ 전공 값 기반 조회
      ▼
Subject
 ├─ id (PK)
 ├─ name
 ├─ type (전공/교양)
 └─ major (nullable)

User 1 ────< Schedule N
              ├─ id (PK)
              ├─ title
              ├─ type (과제/시험/발표)
              ├─ subjectName
              ├─ date
              └─ dDayNotified

4. 🟡 Team Schedule (팀 일정)

  1. Team (팀 정보) 테이블
필드명 타입 설명
id Long PK
name String 팀 이름
inviteCode String 초대 코드 (랜덤 문자열, unique)