1️⃣ ERD 설계
-
Aquery tool에서 ERD 생성

- DB Type : Mysql
- ERD Name : Instagram_ERD
- DB Name : TodayFruit
-
설계한 ERD
-
ERD 설계 기준
- 공통 설계 기준
- 소문자 사용
- 단어 축약 X : password (O), pwd (X)
- 동사는 능동태 사용 : create_at(O), created_at(X)
- 테이블 설계 기준
- 단수형 사용
- 테이블 명에 snake case(_) 사용
- 칼럼 설계 기준
- 칼럼 명에 snake case(_) 사용
- password 칼럼 : 암호화된 패스워드 문자열을 저장하므로 VARCHAR(200)으로 지정
- image 칼럼 : 게시글 이미지에 대한 URL을 TEXT 타입으로 저장
//TEXT 타입은 default 값 지정이 안되므로 User Image칼럼은 VARCHAR 타입 사용
- status 칼럼 : JPA Entity 클래스의 Enem 타입 status 상수와 매핑하기 위해 VARCHAR 타입 사용
- MySQL 데이터 타입 지정 기준
- BIGINT 타입 : 많은 사용자를 감당하기 위해 idx 칼럼에 지정
- VARCHAR 타입 : 영문 1바이트, 한글 3바이트임을 고려하여 각 칼럼에 바이트 할당
- TIMSTAMP 타입 : 테이블에서 하나의 row의 값들이 생성(created_at)되고 변경(updated_at)될때마다 시각을 기록하기 위해 사용하며, JPA Entity 클래스의 LocalDateTime 타입 필드와 매핑
2️⃣ 엔티티 설계
엔티티 상세 설계
-
User 엔티티
-
Post 엔티티
Post 엔티티 클래스
PostImage 엔티티 클래스
post 테이블
post_image 테이블
-
PostLike 엔티티
PostLike 엔티티 클래스
postLike 테이블
-
Comment 엔티티
Comment 엔티티 클래스
comment 테이블