이번 포스트엔 ERD 작성과 테이블 정의서 를 어떻게 진행했는지 작성해보겠습니다.
테이블을 어떻게 나눌지 어떤 정보들이 필요한지, 중복을 어떻게 줄일지 많은 경험이 필요해보입니다. 막막하다는 소리
감사합니다 주인님.
데이터베이스에 저장하고 관리해야 하는 정보를 파악해봅시다.
이를 위해 어떤 정보가 필요한지, 어떤 기능이 제공되는지 생각해봅시다.
저희 프로젝트에는 회원관리기능, 결제 및 구매 기능, 게시판 기능(모임글) 등등이 있습니다. 그렇다면 회원정보를 담은 user테이블, 주문정보를 담은 order테이블, 모임글의 정보를 담은 moim테이블 이 필요할 겁니다.
우선, 모든것의 기본이 되는 USERS 테이블을 만들어봅시다.
USERS |
---|
(PK) 사용자 식별을 위한 고유 번호 |
사용자 아이디 |
사용자 이메일 |
사용자 비밀번호 |
사용자 실명 |
회원 가입일 |
등등 만들면서 추가합시다 |
이런식으로 해당 기능에 필요한 테이블들을 만들어 보았습니다.
제가 erd에서 담당했던 파트 중 하나인 티켓구매 부분을 만들어 나가는 과정을 서술하겠습니다.
사용자 >> 모임 게시글 페이지 >> 모임 게시글 내 구매버튼 클릭 >> 결제창 팝업 >> 외부 결제 api 실행 >> 결제 진행 >> 티켓 발권(온라인상) >> 모임 주최자(판매자)에게 수익금 돌려주기
느낌오시죠?
구매자는 저희에게 결제를 하고 저희는 수수료를 제외한 금액을 판매자에게 돌려주는 서비스를 구상했습니다. 구상만 그렇고 실제 구현은 사용자가 수령받을 금액을(지금까지 번돈) 표시해주는 것 까지만 우선 하기로 했습니다.
결제 API 는 아임포트 (노션으로 가이드도 잘나와있고 테스트 환경을 잘 제공해줌) 사용할겁니다. 어떤 정보를 주고 받는지, 시퀸스는 어떤지 알아보니
imp_uid000000000000
(아임포트 고유 결제 번호)
결제예상금액
(실제 결제 금액은 다를수있기 때문에 검증용)
주문번호
(우리 DB내)
사용자번호
(우리 DB내)
를 테이블 속성으로 가지고 있어야 할 것 같습니다.api 배워본적도 없고 아예 처음 사용해보는 건데 맞게 하는지 모르겠습니다.
필요한 테이블들은
사용자정보
, 모임정보
, 주문정보
, 티켓정보
, 대금수령
USERS
, MOIM_POST
, ORDER
, TICKET
, RECEIPT
입니다.
USERS
➡️ ORDER
⬅️MOIM_POST
⬇️ ⬇️
RECEIPT
TICKET
사용자
USERS
와 모임MOIM_POST
가 만나서 주문ORDER
가 생성되고 주문ORDER
에서 결제가 완료되면 티켓TICKET
이 생성되고 대금수령RECEIPT
에 정보가 업데이트가 됩니다.
일대다, 다대다 등 연결에서 오류가 있다는 피드백을 받았습니다. MOIM_MEM 부분같은데 잘 고민해서 추후에 수정해야겠습니다.
데이터 설계는 정말 경험을 많이 쌓아야 설계를 잘할수 있는거 같습니다. 되려 테이블로 많이 정보를 나누는 것이 독이 되기도 하고 데이터베이스 연결을 많이 요구하게 하게 되는 것 같습니다. 너무 이론적으로 설계하기보단 실제로 사용할때 최소한의 요청으로 필요한 정보들만 받을 수 있는 묶음으로 설계해보는게 중요할거 같습니다.