[Watcha Classic] 모델링

이태권 (Taekwon Lee)·2022년 6월 22일
0

[Project] Watcha Classic

목록 보기
1/6
post-thumbnail

"별이 빛나는 밤에" (빈센트 반 고흐, 1889)


1. 모델링


1. 모델링 초안(6월 20일)

왓챠피디아는 '영화'에 대한
영화가 제일 중요할 것 같아 films을 기준으로 모델링을 해 보았다.

films을 기준으로

  1. 우측 상단은 다대다 관계인 테이블을 모아 놨다.

    • countries다대다인 이유는, 여러 국가가 한 영화에 같이 참여하는 경우가 있기 때문이다. 예시는 영화 《램》이다(3개국)
  2. 좌측 상단은 일대다 관계인 테이블이다.

  • categories는 왓챠피디아가 영화 뿐만 아니라 TV, 책, 웹툰 등이 있어서 넣어놨지만, 우리 팀은 영화만 할 예정이므로 필요가 없을 것 같다
  1. 우측 하단은 일대일 관계인 description을 넣었는데, 정보가 너무 길어서 따로 테이블을 만들었다. 하지만, 굳이 분리하지 않고 films 안에 넣어도 괜찮을 것 같다.

  2. 좌측 하단 및 중앙 하단은 아직 확정하지 못한 table이다.
    회원에 대한 정보로 users를 기준으로 comments rates likes를 추가로 정하였다. 이름도 불확정이라


2. 모델링 수정(6월 21일)

수정 사항

  1. films말고도 users를 커다란 두 축으로 두었다. 추가하면 comments까지 세 축이다.

    • 이렇게 해서django에서 만들 3가지 앱이다
  2. users와 여러 테이블의 이름을 변경, 확정지었다.

    • likes는 의미가 불분명하여, 코멘트에 대한 좋아요이기에 comments_likes로 바꾸었다.
  3. comments는 영화에 대한 코멘트로, 어떤 유저가 어떤 영화에 대해 코멘트를 했는지 필요하므로 외부 키로 usersfilms를 두었다.

    • deleted_at이 들어간 이유는, hard deletion가 아닌 soft deletion을 하기 위해서다.
  4. replies는 코멘트에 대한 댓글로, 어떤 유저가 어떤 코멘트에 대해 댓글을 달았는지 필요하기에 외부 키로 userscomments를 외부 키로 넣었다.

  5. categories 삭제

  6. description을 별도로 분리하지 않고 films에 추가

  7. 보고 싶어요(찜 기능)에 대한 table인 watch_list 추가


3. 모델링 수정(6월 22일)

아마 모델링 최종안(?)이 되지 않을까 한다.

수정 사항

  1. filmsrunning_time_minvarchar에서 int으로 바꾸었다
    • 상영 시간이 긴/짧은 순으로 정렬할 때 varchar은 다음과 같은 문제가 발생한다
      • 자릿 수가 모두 같다면, 크게 문제가 없다
      • 다만, 자릿 수가 서로 다른 배열이라면 정렬 시 백과사전처럼 정렬된다
# 무작위로 배열된 러닝 타임
["80", "100", "20", "12", "230"]
# 내가 원한 정렬(러닝 타임이 짧은 순)
["12", "20", "80", "100", "230"]

# 정렬 결과
["100", "12", "20", "230", "80"]

3. 모델링 수정(6월 23일)

수정 사항

  1. 배우는 역할(주연/조연/특별출연)과 배역이 있을 수 있다.
    casts roles 테이블을 새로 생성
    중간 테이블 films_actors에 외부 키로 casts_id roles_id 추가

추가 수정 사항(?)

블로그를 작성하다 보니 replies에 대한 좋아요도 있다는 걸 잊었다.
그걸 추가하려면 추가로 replies_likes를 추가로 생성하여
users, replies, films를 외부 키로 두어야 하나?


🔖 참고자료

profile
(Backend Dev.) One step at a time

0개의 댓글