DataBase/모델링

대여 시스템 - DB - 논리 모델링 구축 해보기

쿠키오빠 2025. 1. 12. 20:55
반응형

이번 대여 시스템 프로젝트에서는 로그인 / 리뷰 / Q&A 등록을 맡았다.

 

이전 프로젝트에서 형상 관리를 해봤고, DB 설계의 중요성과 전체적인 시스템을 이해하는 게 중요하다고 느껴져,

 이번엔 DBA를 맡게 되었다.

 

프로젝트가 끝난지 얼마 되지는 않았지만 급한 마음에 대략적인 DB를 설계해봤다.

 

 

 

추가 해야할 테이블도 있겠지만 일단 정말 필요할 거 같은 항목들로 구성해봤다.

 

나의 역할은 DBA이지만 팀원간 각자 맡은 기능에 대해서 직접 짜기로 얘기가 되어 있었다.

하지만 전체적인 흐름을 보다 정확히 이해하고 싶은 마음에 모두 짜봤다!


일단 내가 맡은 기능 중 로그인은 자체로그인 + 소셜 로그인 기능을 추가했다.

 

요즘 소셜(구글 , 카카오 , 네이버)를 이용한 회원으로 관리하는 사이트가 대부분이므로 이 기능은 꼭 넣어보고 싶었다.

 

소셜 로그인은 매우 생소하여 서칭해본 결과,

 

'소셜로 이용하기'를 누르면 관련 사이트로 이동하고, 아이디 비밀번호 입력 시 소셜 사이트에서 엑세스 토큰(아이디 , 이메일  등) 정보가 넘어와 회원 테이블에 저장되는 시스템이다.

 

최초 회원 가입은 위와 같은 방식으로 진행되고, 추후 로그인 시에는 저장된 토큰으로 데이터를 불러와 로그인 하면 된다.


 

포스트는 리뷰와 Q&A 를 모두 사용하는 테이블인데 중복된 내용이 많으므로 포스트 종류로 구분지어 사용하면 효율적일 거라 생각했다.

(예를들어, 포스트 종류 0  : 리뷰 작성 / 포스트 종류 1 : Q&A 작성)

댓글 테이블 설계할 때가 시간이 가장 오래 걸렸는데 대댓글 기능 때문이다.

 

일단 포스트 번호 / 포스트 종류 / 댓글 번호를 복합 식별자로 구분였다.

 

댓글 번호는 포스트 번호와 종류 상관없이 작성 할 때마다 Auto Increment 적용할 예정이다.

 

댓글과 대댓글 작성 시, 상위 댓글을 어떻게 하면 특정할 수 있을까 고민하다가 넣게 된 게,

댓글 레벨과 상위 댓글 번호이다.

 

- 상위 댓글 예시 -

예를 들어 댓글이 두개 (댓글 번호 2) 적혀 있는 상태에서 댓글 번호 2번에 대한 댓글을 추가할 때,

자동적으로 번호 3번이 채번되는데(댓글번호) 상위 댓글을 특정할 수 있는 댓글 번호를 입력한다(댓글 번호2)

 

- 댓글 레벨 예시 -

최초 댓글 (lv1) 그 댓글에 댓글(lv2) 그 댓글에 댓글에 댓글 (lv3)
( 대댓글 작성할 때 상위 댓글을 특정해야 함. 

최초 작성 : Lv1 그 다음 Lv2 이런식 / 다른 사람이 최초 작성해도 lv1 이렇게 구분함, 어차피 제일 최상위는 댓글번호)

 

출처 : https://velog.io/@hhss2259/%EB%8C%80%EB%8C%93%EA%B8%80-%EB%8C%93%EA%B8%80%EC%9D%98-%EB%8C%93%EA%B8%80-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

이런 식으로 댓글 번호 / 상위 댓글 / 댓글 레벨로 작성자와 상위 댓글을 특정할 수 있다.

 

 

첨부 파일 엔터티를 따로 분류한 이유는 확장성도 있겠지만 제공자의 상세 페이지 업로드 / 사용자의 리뷰 사진 첨부를 효율적으로 사용하기 위해 구성하였다.

 

첨부파일 종류가 00이면 리뷰에 올리는 사진 / 01이면 상세 페이지 업로드인 셈이다.


추가로 내가 맡은 기능은 아니지만, 대여 시스템의 핵심은 결제라고 생각하여 결제 /정산 쪽도 구성해 보았는데

 

팀원들과 상의 후 수정할 건 수정할 예정이다.

 

반응형