[맛침반] ERD 작성

6720·2023년 11월 29일

프로젝트 맛침반

목록 보기
1/12

이번 목표

'맛침반'의 요구사항 명세서, 넣게 될 기능 등 대략적인 설계는 다 이루어졌다.
내가 담당한 기능의 ERD를 작성해보자!

내가 맡은 기능

[매장]

  • [관리자] 매장 등록 (Create)
  • [회원(일반)] 매장 입점 등록 (Create)
  • [전체] 조건 검색을 통한 매장 목록 조회(Read)
    • 조건부 필터링 적용
  • [전체] 매장 상세정보 조회(Read)
  • [관리자, 회원(사장)] 매장 정보 수정(Update)
    • 관리자는 모든 매장의 정보를 수정할 수 있으며, 회원(사장)은 자신의 매장 정보만 수정할 수 있다.
  • [관리자, 회원(사장)] 매장 삭제(Delete)
    • 관리자는 모든 매장을 삭제할 수 있으며, 회원(사장)은 자신의 매장 정보만 삭제할 수 있다.

[관심 매장]

  • [회원(일반/사장)] 관심 매장 등록(Create)
  • [회원(일반/사장)] 관심 매장 삭제(Delete)
  • [회원(일반/사장)] 나의 관심매장 목록 조회(Read)

[리뷰]

  • [회원(일반/사장)] 리뷰 등록(Create)
  • [전체] 리뷰 목록 조회(Read)
    • 조건부 필터링
  • [관리자, 회원(일반/사장)] 리뷰 삭제(Delete)
  • [관리자, 회원(사장)] 리뷰 댓글 등록(Create)
    • 리뷰가 SNS화가 되면 댓글 기능은 SNS처럼 적용 범위가 [전체]로 변경됨

ERD 작성

매장 등록

  • [관리자] 매장 등록 (Create)
  • [회원(일반)] 매장 입점 등록 (Create)

회원이 form에 작성한 데이터를 기반으로 등록하도록 할지(관리자가 데이터를 받아 승인하면 등록과 함께 회원 등급 변경),
회원이 관리자에게 기능 외의 방법으로 데이터를 보내면 관리자가 폼에 맞게 등록하도록 할 지,
고민중이고 우선 전자를 생각하고 ERD를 작성해보자.

매장 신청

  • 회원(일반)은 자신의 매장 등록을 신청할 수 있다.
  • (배민 등 여러 벤치마킹 앱 참고) 매장 등록에 필요한 서류는 사업자등록증/영업신고증/정산받을 계좌의 통장사본/가격이 포함된 가게 메뉴판이다.
    • 이때 서류의 내용 확인을 위해 form으로 서류에 작성된 내용을 작성한다.
    • 여기서 맛침반은 사업자등록증/영업신고증/정산받을 계좌의 통장사본 정보만 받도록 한다.
  • 관리자는 회원이 신청한 매장 등록을 승인 또는 거부할 수 있다.

문제1) 비슷한 성격의 테이블 설계

사업자등록증의 경우 과세구분에 따라 구성 내용이 다름.
ex) 일반에는 상호, 성명, 생년월일, 개업연월일, 등록번호, 사업장소재지, 업태, 종목, 공동사업자 등이 있고, 법인은 법인명, 표자, 개업연월일, 등록번호, 법인등록번호, 사업장 소재지, 본점 소재지, 업태, 종목 등이 있음.
-> 일반에는 대표자의 생년월일이 있으며, 법인에는 법인등록번호, 본점 소재지가 있음.

확인결과 일반이냐, 법인이냐에 따라서 양식이 다름.
-> 일반과 법인은 나눠서 저장해야 할까, 따로 저장해야 할까?

이에 대한 본인 질문 글
결론적으로 사업자등록증 테이블을 만든 후에, 겹치지 않는 데이터의 경우 따로 테이블을 빼도록 함. - 이를 정규화라고 함.

해결 ERD:

최종 ERD:

관심 매장 등록

  • [회원(일반/사장)] 관심 매장 등록(Create)
  • [회원(일반/사장)] 관심 매장 삭제(Delete)
  • [회원(일반/사장)] 나의 관심매장 목록 조회(Read)
  • 회원은 여러 매장을 관심 매장 목록에 등록할 수 있음.
  • 매장 목록은 여러 회원이 관심 매장에 등록할 수 있음.

리뷰

  • [회원(일반/사장)] 리뷰 등록(Create)
  • [전체] 리뷰 목록 조회(Read)
    • 조건부 필터링
  • [관리자, 회원(일반/사장)] 리뷰 삭제(Delete)
  • [관리자, 회원(사장)] 리뷰 댓글 등록(Create)
    • 리뷰가 SNS화가 되면 댓글 기능은 SNS처럼 적용 범위가 [전체]로 변경됨
  • 리뷰는 한 예약(매장) 당 하나의 리뷰만 작성할 수 있음.
  • 리뷰에는 회원(사장)이 답글을 달 수 있음.

문제1) 리뷰와 예약은 관련 있을까?

리뷰를 작성한 사람과 리뷰의 대상이 되는 매장은 리뷰와 연결되어야 함.

그렇다면 예약과 리뷰는 연결되어야 할까?

  • 리뷰는 예약 당 1개의 리뷰를 작성할 수 있음.
  • 하지만 리뷰에서 예약 정보를 봐야 할 필요는 없음.
    • 리뷰는 리뷰대로, 예약(주문)은 예약대로 보면 되기 때문임.

해당 링크에서 리뷰로 넘어가는 로직은 프론트로 보이도록 처리함.
ex) 주문 목록 페이지에 예약 목록이 나온다면 리뷰 마감 시간까지 프론트로 리뷰를 작성할 수 있는 버튼을 추가 -> 눌러서 리뷰 작성 (리뷰와 예약을 굳이 연결할 필요는 없을 것 같음.)

이 방법을 사용하면 굳이 리뷰는 예약과 연결되어 있을 필요 없음.
만약 예약 정보와 연결돼야 하는 상황이라면 그때 다시 생각해봐야 할 듯.

profile
뭐라도 하자

2개의 댓글

comment-user-thumbnail
2023년 12월 8일

여전히 멋진 삶을 살고 계시네요!

1개의 답글