"별이 빛나는 밤에" (빈센트 반 고흐, 1889)
왓챠피디아는 '영화'에 대한
영화가 제일 중요할 것 같아 films
을 기준으로 모델링을 해 보았다.
films
을 기준으로
우측 상단은 다대다
관계인 테이블을 모아 놨다.
countries
가 다대다
인 이유는, 여러 국가가 한 영화에 같이 참여하는 경우가 있기 때문이다. 예시는 영화 《램》이다(3개국)좌측 상단은 일대다
관계인 테이블이다.
categories
는 왓챠피디아가 영화 뿐만 아니라 TV, 책, 웹툰 등이 있어서 넣어놨지만, 우리 팀은 영화만 할 예정이므로 필요가 없을 것 같다우측 하단은 일대일
관계인 description
을 넣었는데, 정보가 너무 길어서 따로 테이블을 만들었다. 하지만, 굳이 분리하지 않고 films
안에 넣어도 괜찮을 것 같다.
좌측 하단 및 중앙 하단은 아직 확정하지 못한 table이다.
회원에 대한 정보로 users
를 기준으로 comments
rates
likes
를 추가로 정하였다. 이름도 불확정이라
films
말고도 users
를 커다란 두 축으로 두었다. 추가하면 comments
까지 세 축이다.
django
에서 만들 3가지 앱이다users
와 여러 테이블의 이름을 변경, 확정지었다.
likes
는 의미가 불분명하여, 코멘트에 대한 좋아요이기에 comments_likes
로 바꾸었다.comments
는 영화에 대한 코멘트로, 어떤 유저가 어떤 영화에 대해 코멘트를 했는지 필요하므로 외부 키로 users
와 films
를 두었다.
deleted_at
이 들어간 이유는, hard deletion
가 아닌 soft deletion
을 하기 위해서다.replies
는 코멘트에 대한 댓글로, 어떤 유저가 어떤 코멘트에 대해 댓글을 달았는지 필요하기에 외부 키로 users
와 comments
를 외부 키로 넣었다.
categories
삭제
description
을 별도로 분리하지 않고 films
에 추가
보고 싶어요(찜 기능)에 대한 table인 watch_list
추가
아마 모델링 최종안(?)이 되지 않을까 한다.
films
의 running_time_min
을 varchar
에서 int
으로 바꾸었다varchar
은 다음과 같은 문제가 발생한다# 무작위로 배열된 러닝 타임
["80", "100", "20", "12", "230"]
# 내가 원한 정렬(러닝 타임이 짧은 순)
["12", "20", "80", "100", "230"]
# 정렬 결과
["100", "12", "20", "230", "80"]
casts
roles
테이블을 새로 생성films_actors
에 외부 키로 casts_id
roles_id
추가블로그를 작성하다 보니 replies
에 대한 좋아요도 있다는 걸 잊었다.
그걸 추가하려면 추가로 replies_likes
를 추가로 생성하여
users
, replies
, films
를 외부 키로 두어야 하나?