<aside> 🔔

기본 NOT NULL 입니다.

(참고) 이미지 자체를 데이터베이스에 저장하는 것보다는 외부 스토리지 시스템(예: S3, 서버 경로 등)을 사용하는 것이 좋음

칭구칭구 dbdiagram

</aside>

회원 테이블(users)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
회원 ID id BIGINT Long Primary Key,
AUTO_INCREMENT
로그인 ID user_id VARCHAR(50) String UNIQUE
회원 이름 name VARCHAR(50) String
닉네임 nickname VARCHAR(50) String UNIQUE
이메일 email VARCHAR(255) String UNIQUE
비밀번호 password VARCHAR(255) String
프로필 사진 URL profile_picture_url VARCHAR(500) String NULLABLE
자기소개 멘트 bio TEXT String NULLABLE
가입일 join_date TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP
마지막 접속일 last_login_date TIMESTAMP LocalDateTime NULLABLE
OAuth 구분 ID unique_key VARCHAR(255) String NULLABLE
가입 소셜 social_type ENUM('NONE', 'GOOGLE', 'KAKAO') DEFAULT 'NONE’

개인 스케줄 테이블(user_schedule)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
인덱스 id BIGINT Long Primary Key,
AUTO_INCREMENT
회원 ID user_id BIGINT Long Foreign Key
(users.id)
일정 제목 title VARCHAR(255) String
일정 설명 description TEXT String NULLABLE
일정 날짜 schedule_date TIMESTAMP LocalDateTime

친구 목록 테이블(friends)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
친구 ID id BIGINT Long Primary Key,
AUTO_INCREMENT
사용자 ID user_id BIGINT Long Foreign Key (users.id)
친구 ID friend_id BIGINT Long Foreign Key (users.id)
친구 시작일 friend_since TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP
요청 상태 request_status ENUM('PENDING', 'ACCEPTED', 'REJECTED') String
제약 조건 UNIQUE(user_id, friend_id) - - 중복 친구 관계 방지

쪽지 테이블(messages)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
인덱스 id BIGINT Long Primary Key,
AUTO_INCREMENT
보낸 회원 ID sender_id VARCHAR(50) String Foreign Key (users.id)
받은 회원 ID receiver_id VARCHAR(50) String Foreign Key (users.id)
쪽지 내용 content TEXT String
전송 날짜 sent_date TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP
쪽지 읽음 여부 read_status ENUM('READ', 'UNREAD') String DEFAULT 'UNREAD’
발신자 삭제 sender_deleted BOOLEAN boolean TRUE: 삭제 FALSE: 삭제되지 않음
수신자 삭제 receiver_deleted BOOLEAN boolean TRUE: 삭제 FALSE: 삭제되지 않음

그룹 테이블(user_groups)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
그룹 ID id BIGINT Long Primary Key,
AUTO_INCREMENT
그룹명 group_name VARCHAR(100) String
그룹 설명 description TEXT String NULLABLE
그룹 생성일 created_at TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP
그룹 생성자 creator_id BIGINT (FK) User 외래키(Foreign Key), User 엔티티와 다대일(ManyToOne) 관계

그룹 요청 테이블 (group_request)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
요청 ID id BIGINT Long Primary Key, AUTO_INCREMENT
그룹 ID group_id BIGINT Long Foreign Key (groups.id)
보내는 사용자 ID sender_id BIGINT Long Foreign Key (users.id)
받는 사용자 ID receiver_id BIGINT Long Foreign Key (users.id)
요청 상태 request_status ENUM('PENDING', 'ACCEPTED', 'REJECTED') String
생성 일시 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP

그룹 멤버 목록 테이블(group_members)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
관계 ID id BIGINT Long Primary Key, AUTO_INCREMENT
그룹 ID group_id BIGINT Long Foreign Key (groups.id)
사용자 ID user_id BIGINT Long Foreign Key (friends.user_id)
상태 status ENUM('PENDING', 'APPROVED', 'REJECTED') enum, String 그룹 멤버 상태
가입 시각 joined_at DATATIME/TIMESTAMP LocalDateTime 가입 시간, @PrePersist로 자동 설정

그룹 추억 앨범 테이블(group_memories)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
추억 ID id BIGINT Long Primary Key,
AUTO_INCREMENT
그룹 ID group_id BIGINT Long Foreign Key (groups.id)
회원 ID user_id BIGINT Long 추억을 남긴 회원, Foreign Key (users.id)
제목 title VARCHAR(255) String
내용 content TEXT String
이미지 URL1 image_url_1 VARCHAR(500) String
이미지 URL2 image_url_2 VARCHAR(500) String NULLABLE
이미지 URL3 image_url_3 VARCHAR(500) String NULLABLE
위치 location VARCHAR(255) String
추억 날짜 memory_date DATE LocalDate
작성 날짜 created_date TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP
수정 날짜 modify_date TIMESTAMP LocalDateTime DEFAULT CURRENT_TIMESTAMP

그룹 스케줄 테이블(group_schedule)

설명 컬럼명(SQL) 데이터 타입(SQL) 데이터 타입(Java) 비고
인덱스 id BIGINT Long Primary Key
그룹 아이디 group_id BIGINT Long Foreign Key (groups.id)
일정 제목 title VARCHAR(255) String
일정 설명 description TEXT String
일정 날짜 schedule_date TIMESTAMP LocalDateTime