DB 설계 과정에서 고민이 있어서 질문 올립니다. 0 2 1,204

by muidang [DB 모델링/설계] 논리적구조 [2016.01.15 17:43:49]


서비스를 제공하는 O2O쪽 서버를 개발중에 있습니다.
서버는 amazon ec2 ubuntu 14에서 mysql 5.6 사용하고있습니다.
지금 베타서비스 하고있으며 얻은 경험으로 새로 서버를 구축중입니다.

지금 저에게 주어진 조건은
어떠한 서비스를
특정 판매자가 && 특정 서비스를 && 특정 지역에서 && 서비스 몇회를 && 특정 날자에
제공할 수 있어야 합니다.
+ 상품 그룹에 대한 갯수 제한, 지역 그룹에 대한 갯수 제한 이 들어갈 수 있을것 같습니다...

예를 들면)
seller1은
  1월 15일에
    A상품을
      강남구 30개
      송파구 15개
      서초구 15개
    B상품을
      강남구 22개
      송파구 11개
      서초구 3개
  1월 16일에
    A상품을
      강남구 12개
      송파구 17개
      서초구 15개
    B상품을
      강남구 21개
      송파구 71개
      서초구 51개
seller2는
  1월 15일에
    A상품을
      강남구 33개
      송파구 11개
      서초구 22개
    B상품을
      강남구 22개
      송파구 33개
      서초구 11개
  1월 16일에
    A상품을
      강남구 22개
      송파구 15개
      서초구 16개
    B상품을
      강남구 12개
      송파구 23개
      서초구 34개

여기에 A+B상품 합쳐서 100개 제한
혹은 강남구 송파구 합쳐서 50개 제한
과 같은 조건이 추가로 걸릴 수 있습니다....

일단 제가 생각한 방법은

판매자를 seller table
상품을 product table
지역을 location table
라고 할 때
날짜, 갯수, seller_id, product_id, location_id 를 가지는 테이블을 만드는 것 입니다.

이 방식을 사용하면
매일 seller * product * location 에 해당하는 column이 생성된다는 점이 마음에 걸리고
또한 뭔가 변경이 생겼을 때 처리가 복잡해질 것 같아 걱정입니다.

혹시 더 좋은 구조나 어떠한 아이디어를 주시면 정말 감사할것 같습니다.

by 아발란체 [2016.01.15 18:28:57]

일단 생각하신 부분으로 ERD를 짜서 올려주시는 것이 보다 명확한 단서가 될 것 같습니다.

지금은.. 말씀하신 것처럼 돌출된 항목이 "날짜, 갯수, seller_id, product_id, location_id" 밖에 없어서 근거가 부족해보입니다. 아님 저게 전부인가요? 프로세스만 봐도 주어진 단서로만 생각하면 오류 발생 여지가 있어 보입니다. 


by 신이만든짝퉁 [2016.01.18 11:01:18]

모델링에는 정답은 없다고 합니다.

엔터티로 도출하기 전, 엑셀이나 워드프로세스 등을 이용해 요구분석을 명확히 해보시게 좋을 것 같습니다. 그 후 중요한 데이터, 지속적으로 관리해야 할 데이터를 엔터티로 만드시면 될 것 같습니다.

정규화만이라도 잘 해두면, 추후 변경사항이 발생해도 대응하기 수월하실 겁니다.

위에 기입해주신 정보만으로 엔터티 도출에 한계가 있으나 판매자id, 상품id, 지역id, 날짜를 pk로 하고, 속성을 판매갯수로 하는 엔터티 도출은 문제 없어보입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입