<aside> 🔔
기본 NOT NULL 입니다.
(참고) 이미지 자체를 데이터베이스에 저장하는 것보다는 외부 스토리지 시스템(예: S3, 서버 경로 등)을 사용하는 것이 좋음
</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 |
| 이메일 | 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 |