Skip to content

DB설계

Jo In Hyeok edited this page Nov 13, 2021 · 8 revisions

모여런 DataBase

Redis

MySQL(Prisma)

  • STRING -> VARCHAR(191)

User(user)

칼럼 타입 옵션 설명
id INT PK 유저 고유 ID
name STRING NOT NULL 유저이름
email STRING NOT NULL 유저 이메일
height FLOAT
weight FLOAT 몸무게

MultiRun

칼럼 타입 옵션 설명
id INT PK 멀티런 고유 ID
roomImage STRING 룸의 배너 이미지
title STRING NOT NULL 방 이름
status enum(string) NOT NULL 방 상태
description TEXT 방 설명
startTime DATE NOT NULL 러닝 시작 시간
limitTime INT NOT NULL 러닝 제한 시간
limitMember INT NOT NULL 방 최대인원
targetDistance INT NOT NULL 목표 거리
  • status : Open or Close ,Open: 방이 열림 멤버 모집 상태, Close: 러닝 중 혹은 종료된 상태

MultiRunMember

  • MultiRunUser 의 N:M 테이블
칼럼 타입 옵션 설명
roomId INT NOT NULL MultiRun아이디 (FK)
userId INT NOT NULL User아이디 (FK)
runId Types.ObjectId(string) 러닝ID(moongoose Runnings 스키마id)
isOwner Boolean NOT NULL, DEFAULT False 방장 여부

RoomStatus

칼럼 타입 옵션 설명
roomId INT NOT NULL MultiRun아이디
userId INT NOT NULL User 아이디
socketId uuid(string?) 소켓 아이디
  • 유저가 현재 어떤 룸에 접속해있는지, 소켓 연결이 끊겼는지 확인하기 위한 테이블
  • RunState에 유저 아이디가 없으면 참여중인 방이 없음
  • socketId가 비어있으면 네트워크 에러 혹은 앱을 재시작해서 socketId가 유실된 상태임.
  • socket이 disconneted 되면 러닝 상태에 socketId를 비워줌

MongoDB(Mongoose)