-
Notifications
You must be signed in to change notification settings - Fork 0
ERD 설계
nick edited this page Apr 22, 2024
·
6 revisions
https://drawsql.app/teams/outstagram/diagrams/outstagram/embed
- 팔로우 관계 구현 시, (from_id + to_id)의 조합을 복합 키로하는 follow 테이블을 통해 구현
- 현재 두 테이블의 column 구성은 동일하다.
- 그래서 하나의 테이블로 합친 후 'type' column을 통해 해당 row가 like인지 bookmark인지 구분하려고 함
- 하지만 현재는 두 테이블이 똑같을지 몰라도, 추후에 각 테이블에 column이 추가될 수 있으니 확장성을 위해 분리하는게 맞다고 판단
- 초기에는
target_id
column을 통해 게시물에 대한 알림인 경우 post_id를, 팔로우에 대한 알림인 경우 대상 user_id를 저장하려고 함 - 이는 하나의 column이 2가지 역할을 담당하는 것임으로 단일 책임 원칙(SRP)를 어기는 상황이다
- SRP를 지키기 위해 하나의 column(
target_id
)에 2가지 역할을 부여하지 않고 post_id, user_id로 분리 - 하지만 두 column 중 하나의 column은 무조건 null이다.
- 이것 또한, 비정규화된 상태임으로 해결하기 위해 각 상태에 맞는 테이블로 분리하자
- 결국 2가지 테이블로 분리함을 통해 SRP 준수, 정규화 준수했다.
이유 2가지
- 알림 데이터를 가져오려면 결국 notification -> post_notification까지 조회해서 데이터를 가져와야 함 (notification에서 target의 type을 보고 post_noti or user_noti 테이블에서 데이터 가져올 수 있음. 즉, 쿼리를 2번 날려야 함
- 추후에 type이 추가된다면 테이블을 하나 또 생성해야 함