ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 공연 예매 프로젝트 - ERD, API 명세서
    TIL. 2024. 6. 28. 23:06

    오늘은

    새로 시작하게된 프로젝트에 앞서 API 명세서와 ERD를 작성했습니다. 

     

    API 명세서

    프로젝트에서 필요한 최소한의 필수적 기능들로 작성했습니다. 

     

    - auth : 회원가입, 로그인 

    - user : 개인 정보 조회 

    - show : 공연 생성, 공연 검색, 공연 상세 조회

    - ticket : 랜덤 예매하기, 예매 확인, 예매 취소, 전체 좌석 예매 정보 확인, 좌석 지정 예매 

     

    좌석마다 등급이 있고 가격이 다르기 때문에 좌석을 지정하여 예매, 예매 취소, 전체 좌석 예매 정보 확인 

    API가 해당 프로젝트에서 핵심적인 부분이라고 생각됩니다. 

     

    req, res 작성에서 ERD의 필요성을 느껴 번갈아가며 작업했습니다. 

    예매와 관련된 API URL과 method가 RESTful 하게 작성되었는지, 피드백을 받아보고 수정사항이 있다면 

    좀 더 반영해 볼 생각입니다.

     

    ERD

     

    ERD는 티켓 테이블과 티켓 구매 내역 테이블에서 고민이 들었습니다. 

     

    1. 티켓 테이블에서 거의 모든 테이블을 참조하고 있는데 잔여 좌석 테이블만을 참조하고 나머지는 join을 통해 데이터를 가져올 수 있지 않을까? 

    - 가능하겠지만, 그만큼 join 해야 하는 깊이가 늘어나고 오히려 더 복잡한 코드를 구성할 수 있다는 피드백을 받고 수정했습니다. 

     

    2. 티켓 구매내역 테이블이 필요하지 않을까? 

    - 가격의 변동 사항과 금액이 어떻게 계산되었는지 기록이 필요하다고 생각했습니다. 튜터님께 질문을 드렸고 당연히 추가하면 좋다는 답변을 받아 추가 작성했습니다. 

     

    추가적인 피드백으로 현재 user 테이블에 가용 금액은 따로 빼는 게 정규화의 관점에서 맞다는 피드백을 받았습니다. 

    하지만 지금처럼 가용 금액을 자주 조회해야 하는 경우 테이블을 따로 작성했을 때 불필요한 리소스 낭비가 반복될 수 있어 

    구매내역에서 계산한 뒤 update 해주는 방식을 사용하게 되었습니다. 


    다음으로는 Nest.js와 TypeScript를 사용하여 기본 프로젝트 레포지토리를 구성해보도록 하겠습니다.

Designed by Tistory.