스키마 정의

PSK·2021년 7월 5일
0

eatingSimple

목록 보기
1/3

자취생들이 간단하게 만들어 먹을 수 있는 레시피를 공유할 수 있는 웹 사이트를 만들어보기로 했다.

Backend를 구현하기 위해 모 사이트에서 수강한 인스타 클론 강의에서 배운 GraphQL, Prisma(ORM)을 이용하기로 하고, 기본적인 setting을 마쳤다.


스키마

1. User

  • username과 password로 로그인하고, 당연히 username은 unique 해야한다.
  • 하나의 email로만 회원 가입이 가능하기 위해 email도 unique로 설정해준다.
  • password는 bcrypt를 이용해서 hashing되어 저장된다.
  • bio는 상태메시지, avatar는 프사이고, 필수는 아니기 때문에 ?를 붙였다.
  • User는 여러 Recipe를 작성 할 수 있고, Like를 많이 날릴 수 있고, Comment도 많이 작성 할 수 있기 때문에 배열 관계로 정의하였다.

2. Recipe

  • Recipe는 title(제목), content(내용)을 가지고, 여러 사진도 업로드 할 수 있다. (게시글과 같음)
  • 하나의 Recipe는 한 명의 User에 의해서만 작성될 수 있다.
  • 사진, 댓글, 좋아요는 여러개가 있을 수 있다.

3. Photo

  • Photo는 한 명의 User에 의해서 하나의 Recipe에 업로드 된다.
  • caption은 사진에 딸린 간단한 설명으로, 필수는 아니다.
  • file 필드는 url로, 추후 aws s3에 업로드한 후 그것을 저장할 예정이다.

4. Like

  • 특정한 id를 갖는 Like는 한 명의 User가 하나의 Recipe에 날릴 수 있다.
  • 한 명의 User가 여러 Recipe에 Like를 날리는 건 가능하지만 하나의 Recipe에 여러 Like를 날리는 건 불가능하다. 따라서 Like의 recipeId와 userId의 조합은 unique해야 한다.

5. Comment

  • 특정한 id를 갖는 Comment는 한 명의 User에 의해 하나의 Recipe에 작성된다.
  • payload는 댓글의 내용이다.
  • Like와 달리 한 명의 User가 하나의 Recipe에 여러 댓글을 쓸 수 있다. 그래서 recipeId와 userId가 unique할 필요가 없다.

보완점?

나중에 대댓글 기능이나, 해쉬태그 기능도 천천히 추가해 볼 예정! 일단 천천히 기본 기능부터 구현해보자

profile
개발잘하고싶다

0개의 댓글