넘블 인스타그램 프로젝트를 하면서 ERD를 짜 본 내용이다.
ERD란, Entity Relationship Diagram의 약어로 개체-관계 모델을 뜻한다. 프로젝트를 시작하기 전, 대략적인 데이터베이스의 테이블 형태를 설계하는 게 좋다. 개발과 동시에 ERD를 작업한다면, 변경 사항이 생겼을 때 대처하기 어려울 수도 있기 때문이다.
설계한 ERD는 위의 그림과 같다.
soft delete
방식을 활용할 것이기에 유저의 상태를 나타내는 activated를 만들었다. (soft delete: 논리적으로만 삭제 처리를 하는 것, 데이터베이스에 남아 있다.)User
이므로, User : Post = 1 : N
의 관계를 설정한다.Post : Comment = 1 : N
관계이며, User : Comment = 1 : N
관계이다.Comment : Reply = 1 : N
관계이며, User : Reply = 1 : N
관계이다.Follow
는 유저와 유저 간의 관계이다.User
와 User
를 묶을 수 있는 별도의 브릿지 테이블인 Follow를 생성했다.User : Follow = 1 : N
관계가 된다.User : UserAuthority = 1 : N
, Authority : UserAuthority = 1 : N
관계가 된다.User : Message = 1 : N
, ChatRoom : Message = 1 : N
관계가 된다.User : ChatRoom = 1 : N
관계를 가진다.Post
클래스에서 필드로 User
를 가지지만, ERD를 설계할 때는 User
의 id인 long
타입을 참조해야 한다.부족하거나 수정할 사항이 있으면 댓글 부탁드립니다 😃