Atchapedia #1 - Modeling

jinatra·2021년 9월 1일
0

Atchapedia

목록 보기
1/5
post-thumbnail

Atchapedia #1 - Modeling


첫번째 프로젝트 소개

한국의 영화 별점, 평점 작성 및 추천 서비스를 제공하는 왓챠피디아를 클론코딩을 첫번째 프로젝트로 선정하였다.

팀원

  • Back-End: 성우진, 손명희, 이무현
  • Front-End: 김영현, 김영호, 김태수

구현 작업

  • 회원가입
  • 로그인
  • 메인 페이지
  • 상세 영화 페이지

1. ERD 구성

1차 (0830)

Aquery Tool을 이용하여 일차적으로 데이터베이스 구성을 하였다.

  • users 테이블
    • 회원가입, 로그인에 사용될 테이블
  • movies 테이블
    • 기본적인 영화에 대한 정보가 담길 테이블
  • participants 테이블
    • 영화 참여 인물(감독, 주연 조연 등) 정보가 담길 테이블
  • genres 테이블
    • 영화의 장르, movies 테이블과 M2M 관계
  • countries 테이블
    • 영화 촬영국 정보가 담길 테이블
  • ratings 테이블
    • user가 매긴 별점, 코멘트 정보가 담길 테이블
  • imgs 테이블
    • 영화, 배우 관련 이미지 정보가 담길 테이블

모델링 작성 시 고찰점

  • 감독, 배우 별 참여 영화의 정보 나열을 위해 별도의 테이블 생성
  • 장르의 경우 다대다 관계
  • img는 추후 데이터가 추가될 가능성이 있는 데이터이므로 별도의 테이블로 관리
  • user의 개인 profile의 핵심은 별점이므로 별도의 테이블로 관리

2차 (0831)

변경사항

  • 국가의 경우에도 장르와 똑같이 다대다 관계이므로 중간 테이블 생성

(한 영화에 여러 장르, 국가 정보가 담겨있는 것을 볼 수 있다.)


3차_최종 (0901)

변경사항

  • 일대일 관계의 경우 가급적 테이블을 나누지 않는게 좋다는 조언을 받아, movies 테이블 안에 포스터와 트레일러 url 포함
  • 보고싶어요에 영화를 담을 때, 날짜가 아닌 시간별로 정해야 '담은순'으로 나열할 때 편하기에 DATETIME field로 변경
  • 관람등급(grade)의 경우에 나누는게 좋다고 판단, 별도의 테이블로 분리
  • etc.

2. models.py 작성

1. users / models.py


2. movies / models.py





Take Away

초기 모델링 설정의 중요성

첫 프로젝트를 진행하며 느끼게 된 점인데, 백엔드의 경우 처음 데이터간의 관계를 생각하여 모델링을 하는 것이 무엇보다 중요한 듯 하다.
모델링을 후딱 해치우고 코딩부터 하고싶은 마음이 강했는데, 초기 ERD를 세팅하고 추가/예외 사항을 고려하다보니 처음부터 다시 생각해야 하는 경우가 참 많았다.

위에는 1,2,3차로만 나뉘어있지만, 실제로 마지막 모델링까지 구현하기 위해서 대여섯번은 갈아엎은 듯 하다.
이제 실제로 뷰를 작성해보면서 우리가 설계한 모델링이 얼마나 효율적일지, 또는 비효율적일지 알아봐야 겠다.


on_delete 유형 설정

on_delete : ForeignKeyField가 바라보는 값이 삭제될 때 해당 요소를 처리하는 방법을 지정

일반적으로 우리는 models.CASCADE, 즉 ForeignKeyField를 포함하는 모델 인스턴스(row)도 같이 삭제하는 방법을 썼는데, 실제로는 데이터간의 관계를 생각해서 SET_NULL과 같은 방법을 써야할 때도 있다.

데이터를 다룰 때에는 정말 조심해야할 사항이 많은 것 같다.


on_delete 유형 예시

Rating 테이블을 보자.
user_id는 FK이며 User 테이블을 바라본다.
movie_id도 FK이며 Movie 테이블을 바라본다.

  • user_id FK의 경우, user가 삭제되었을 때 rating이 삭제되면 데이터 관리(평균 별점 관리 등)에 이상이 생길 수 있어 NULL값을 줬다.
  • movie_id FK의 경우, movie가 삭제되었을 때에는 rating (해당 영화의 별점)도 사라지는 것이 맞다고 판단하여 CASCADE를 준 것이다.




참고
https://vallhalla-edition.tistory.com/60

profile
으악

0개의 댓글