개발춉
22
2019-08-14 01:14:54
2
208

허접한 주니어의 db설계 질문입니다. 조언부탁드립니다.


안녕하세요? 주니어 6개월차입니다.

회사를 다니면서 제가 DB가 부족하다는것을 많이 깨달아서 토이프로젝트를 할 목적으로 DB설계를 해보았습니다.

설계 하면서 계속 욕심이 생겨 기능 추가하게되고, 아 이거 나중에 하려면 지금 추가해놔야 할거 같은데 막 이런 생각이 계속 드는데 그러다가는 DB설계만하다 흥미가 떨어져 포기 상태가 될까 싶어 조금씩 키워나가자는 생각을 하게되었습니다. 사실 DB가 많이 부족해서 여기에 올리는것이 부끄럽기도 하지만, 지적과 비판이 있어야 성장할 수 있다는것을 깨닫기에 부끄러움을 무릅쓰고 선배 개발자분들과 고수분들에게 도움을 구합니다.


해당 DB 설계는 이렇습니다.



해당 쇼핑몰에 대해 설명을 하자면 클리앙, 뽐뿌처럼 커뮤니티 목적이 크고 물건 장터의 크기는 작은 홈페이지와 반대로 다나와 처럼 물건을 팔면서 위의 클리앙, 뽐뿌같은 커뮤니티를 해나갈 수있는 홈페이지를 한번 만들어 보고 싶었습니다. (해당 물건에 대한 사용기등과 연관 지어서 물건을 소개하고 홍보도 할 수 있도록) 

먼저, 회원 테이블을 한개만 두었는데, 자유롭게 구매자가 되기도 하고 판매자가 되기도 할 수있는 시스템을 만들어 보고 싶었습니다.(물론 이 점에서 이게 맞나 싶긴 합니다.)  그래서 판매자 테이블을 따로 두지 않았습니다. 그래서 User 테이블에 해당 권한(role) 컬럼을 두어서 구별할 수 있도록 했습니다.

주문(order)은 구매 유저와 구매한 물품의 정보, 구매의 진행상황 등이 있습니다. 여기서 해당 주문 개수를 통해 물품의 총 수량을 깎아 나가려고 생각 해두었는데,  몇개 찾아보니 물품의 개수는 물품의 정보에 컬럼이 아닌 물품개수 테이블을 따로 두어서 발주나 이런걸 관리한다고 하는데 일단 제가 설계 한대로 해도 될런지요..?

결제테이블은 주문에 의해 결제된 정보등을 담기도록 했고, 장바구니는 물품정보등과 마찬가지로 수량등을 가지고 있어서 주문으로 들어갈 수있도록 했습니다.

게시판 테이블은 하나로 두어서  카테고리로 나누어서 해당 상품의 QnA, 리뷰 게시판, 나머지 게시판(리뷰등 커뮤니티) 등을 처리하려고 했습니다. 그에 따른 댓글도 달리도록 했습니다.


그리고 해당 카테고리나 상태정보등을 컬럼에서 보시면 char(4)로 지정해두어 코드로 관리하도록 하려합니다.

그걸 위해서 코드 기본정보를 담은 테이블을 선언했고 이것은 나중에 카테고리를 상중하로 더 세부적으로 하면 코드그룹등으로 테이블을 늘려서 관리할 생각입니다.


그래서 여기서 질문이 여러가지 있습니다.

1. 유저 테이블을 하나로 둘것인지, 혹은 판매자와의 분리를 하는것이 나을것인지 질문드립니다.  제가 생각했을땐 권한을 통해서 분리가 되기 때문에 괜찮을거 같다고 생각이 드는데, 그건 저의 작은 지식이라 생각해 어떤것이 나을지 질문입니다.

2. 위에도 언급했듯이, 물품의 정보에 총량 개수를 두고, 주문 개수를 통해 수량을 조절해 나가는 방법에 대해서 질문드립니다. 물론 품절되면, 해당 물품에 대한 판매를 중지하고 새로 물품을 등록하는 하거나 수정을 통해 개수를 수정해야 하는데 수정이력도 없이 수정하는 방법은 최악인것 같고, 차라리 새로 물품을 등록하거나, 가장 최선의 방법은 상품의 대한 발주 혹은 상품수량이력 테이블을 만들어서 관리하는게 낫지만 그러면 처음 구현할때 너무 광범위 하게 구현이 들어가는거 같아서 전자로 일단 구현하고 후에 후자를 구현하는게 맞을까 궁금합니다.

3. 물품 정보에 대한 질문입니다. 11번가를 보고 물품과 물품 옵션기능등을 넣어서 물품정보 테이블 2개를 구현했던것인데, 다나와를 보면 해당 물품에 정보가 엄청나게 많이 들어있습니다. (예를 들면 컴퓨터라고 하면 cpu,메모리 등등 상세스펙) 저도 저렇게 구현하고 싶지만 실질적으로 그렇다면 물품 테이블을 수십~수백가지로 쪼개야한다는 부담이 있어서요 일단 카테고리로 나눠놓고, product_option 테이블에 대충 10가지의 spec1~spec10으로 컬럼을 만들어 놓은것인데, 나중에는 해당 품목으로 쪼개는것이 괜찮을까요? 

4. 부끄럽지만 허접하게 제가 설계한 부분들에 대해 검토를 부탁드립니다. 프론트단과 백엔드단도 얼른 해야 된다고 생각이 들어서 빨리 진행하고 싶지만, 처음에 디비가 제대로 설계되지 않으면 고생한다는것을 알기때문에, 그래도 잘못된것들을 바로잡고 진행하고 싶습니다. 처음이라 100% 완벽을 할 순 없지만 많이 배움을 통해 성장하고 싶습니다. 조언 부탁드립니다.

0
0
  • 답변 2

  • CD9K1
    138
    2019-08-14 09:19:54

    유저테이블은 분리보다는 같은테이블에서 특정 컬럼의 데이터에 따라

    판매자 / 구매자 구별을 해야 하지 않을까요?? 권한은 관리자가 결정하면되고..

    목적도 커뮤니티의 목적이 큰데다가

    분리를 하면 판매자가 다른 물품구입을 위해선 구매를 위한 회원가입을 다시 진행해야 하니까여


    0
  • 개발춉
    22
    2019-08-14 11:52:08

    @CD9K1

    예 그래서, 말씀하신 대로 role 컬럼에 그저 user, 운영자로만 나누는게 아니라 user, user&seller, 운영자 이런식으로 권한을 두어서 판매기능에 대해 오픈해주려고 합니다.  그럼 user는 그냥 그대로 가야겠네요!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.