ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 당근 마켓 - ERD 설계
    ERD 설계 2021. 6. 14. 15:16

    ERD 설계를 하기 전에 ERD란 무엇인지 간단히 살펴보자.

     

    ERD(Entity Relationship Diagram)

     

    개체 - 관계 모델(ERM)의 산출물에 대한 다이어그램으로

    DB에 있는 Table이나 Column, 그리고 데이터들에 대한 관계를 그림으로 표현 한 것입니다. 

     

    이러한 ERD 설계를 간편하게 할 수 있도록 도와주는 여러가지 툴들이 있는데 필자는 그 중 AqueryTool을 사용했습니다.

     

    https://aquerytool.com/

     

    AQueryTool - AQuery.Web

    AQueryTool은 웹 기반 ERD 툴 + SQL 자동 생성 프로그램입니다.

    aquerytool.com

     

    당근 마켓 ERD

     

    FK 같은 경우는 형식상 있다고 가정하에 진행하였습니다. 왜냐하면 FK(외래키) 때문에 DML 명령어 사용 시 제약이 많이 발생하기 때문입니다.

     

    전체 ERD

     

    1. 유저

     

     

    유저 테이블에는 기본적으로 프로필 이미지, 핸드폰 번호, 매너온도등의 데이터가 들어갈 수 있도록 설계하였습니다.

     

    2. 내 동네 설정

     

     

    당근마켓에서 지역 같은 경우에는 유저별 동네가 2개까지 등록할 수 있으며, 2개의 설정된 지역 중 대표지역을 설정할 수 있습니다. 동네 같은 경우는 지역명, 위도, 경도 컬럼으로 나눴으며, 대표지역은 별도의 Flag를 통해 판단할 수 있도록 했습니다. 그리고 선택 범위는 maxRange 컬럼을 넣었습니다.

     

    3. 공지사항

     

     

    4. 키워드 알림 설정

     

     

    유저별 키워드를 등록할 수 있도록 설계하였고, 알림 받을 동네를 설정하는 것은 RegionTB에 leadStatus라는 Flag를 두었습니다.

     

    5. 중고상품

     

     

    중고거래품들은 사진이 여러 개 등록이 가능하므로 이미지 Table을 두었으며,

    조회 수, 채팅 수, 관심 수 같은 경우는 각각 조회 Table, 채팅 Table, 관심 Table을 만들었습니다.

     

    6. 게시글

     

     

    게시글도 여러개의 이미지를 등록할 수 있기에 이미지 Table을 별도로 설계하였고,

    댓글 같은 경우는 댓글과 대댓글을 별도의 컬럼을 두어 판단할 수 있도록 하였습니다.

    그리고 게시글과 댓글에 대한 공감이 따로 있기 때문에 게시글 공감 Table, 댓글 공감 Table을 나눠 설계했습니다.

     

    7. 관심주제

     

     

    모든 유저가 15개의 똑같은 관심주제를 설정할 수 있기 때문에

    관심주제 Table과 유저 별 관심주제 Table 두개로 나눠 설계했습니다.

     

    8. 채팅

     

     

    채팅 기능 같은 경우는 채팅 방과 채팅 내역 Table 2개로 나눠 설계했습니다.

    그리고 채팅 방은 중고품 기준으로 생성되기 때문에 상품의 index 값을 채팅 방 Table에 별도의 컬럼을 두었습니다.

     

     

    기존 당근마켓과는 많이 다르겠지만 앱을 참고하여 되도록 동일한 기능이 구현될 수 있도록 ERD 설계하였고,

    부족한 점은 계속해서 수정 보완할 계획입니다 

     

Designed by Tistory.