Chapter 1. Database 설계

Arin·2025년 12월 26일

UMC 8기 - Node.js

목록 보기
2/11

사용자 관련 요구 사항

  1. 카카오 소셜 로그인을 구현 할 예정이다.
  2. 회원 탈퇴 기능이 필요하다.
  3. 이름, 닉네임, 전화번호, 성별이 필요하다.

책 관련 요구 사항

  1. 사용자가 책 여러 권을 대여할 수 있다.
  2. 책은 하나의 카테고리가 있다.
  3. 책은 제목, 설명에 대한 정보가 필요하다.
  4. 책 소개 페이지에 해시태그가 붙을 수 있고,
    책 한 권에 해시태그 여러 개가, 해시태그 하나가 여러 책에 붙을 수 있다.
  5. 사용자가 책 설명 페이지에서 책에 좋아요를 누를 수 있다.
  6. 카테고리 별로 현재 몇 개의 책이 있는지 집계가 필요하다.

알림 관련 요구 사항

  1. 알림은 공지 관련 알림, 책 반납 시간 임박 알림, 마케팅 알림이 있을 수 있다.

아래는 요구사항에 대한 나의 테이블 설계도이다.

<소셜로그인 테이블>
소셜아이디
사용자아이디(pk)


<사용자 테이블>
사용자아이디(pk)
닉네임
전화번호
성별
활성화 여부

< 테이블>
책 아이디(pk)
카테고리
제목
설명

<해시태그>
태그아이디(pk)
태그이름


<책-태그 테이블>
책아이디(fk)
태그아이디(fk)

<사용자-책 좋아요 테이블>
사용자아이디(fk)
책아이디(fk)

<알림 테이블>
알림아이디(pk)
알림 카테고리(종류: 공지, 반납 시간 임박, 마케팅)
알림 내용

user 테이블

칼럼명타입비고
id (PK)bigint
namevarchar(20)
genderenum('m', 'w', 'none')
birthbigint
addressvarchar(200)
pointbigintdefault 0
social_typevarchar(20)
social_idbigint
created_atdatetime(6)
updated_atdatetime(6)

agree 테이블 (이용약관)

칼럼명타입비고
id (PK)bigint
titletext
detailtext
essentialenum('necessary', 'unnecessary')필수 여부

user_agree 테이블

칼럼명타입비고
id (PK)bigint
user_id (FK)bigint
agree_id (FK)bigint

food_category 테이블

칼럼명타입비고
id (PK)bigint
namevarchar(50)
created_atdatetime(6)
updated_atdatetime(6)

favorite_food 테이블

칼럼명타입비고
id (PK)bigint
user_id (FK)bigint
food_id (FK)bigint
created_atdatetime(6)
updated_atdatetime(6)

restaurant 테이블

칼럼명타입비고
id (PK)bigint
namevarchar(100)
created_atdatetime(6)
updated_atdatetime(6)

mission 테이블

칼럼명타입비고
id (PK)bigint사장님 구분 번호
restaurant_id (FK)bigint
pointint
deadlinedate
created_atdatetime(6)
updated_atdatetime(6)

user_mission 테이블

칼럼명타입비고
id (PK)bigint
user_id (FK)bigint
mission_id (FK)bigint
statusenum('progress', 'complete')
created_atdatetime(6)
updated_atdatetime(6)

review 테이블

칼럼명타입비고
id (PK)bigint
user_id (FK)bigint
restaurant_id (FK)bigint
ratingfloat
bodytext
created_atdatetime(6)
updated_atdatetime(6)

review_image 테이블

칼럼명타입비고
id (PK)bigint
review_id (FK)bigint
image_urltext
created_atdatetime(6)
updated_atdatetime(6)

user_point 테이블

칼럼명타입비고
id (PK)bigint
user_id (FK)bigint
restaurant_id (FK)bigint
mission_id (FK)bigint
pointbigint
created_atdatetime(6)
updated_atdatetime(6)

0개의 댓글