-
당근 마켓 - ERD 설계Computer Science/Database 2021. 6. 14. 15:16
ERD 설계를 하기 전에 ERD란 무엇인지 간단히 살펴보자.
ERD(Entity Relationship Diagram)
개체 - 관계 모델(ERM)의 산출물에 대한 다이어그램으로
DB에 있는 Table이나 Column, 그리고 데이터들에 대한 관계를 그림으로 표현 한 것입니다.
이러한 ERD 설계를 간편하게 할 수 있도록 도와주는 여러가지 툴들이 있는데 필자는 그 중 AqueryTool을 사용했습니다.
당근 마켓 ERD
FK 같은 경우는 형식상 있다고 가정하에 진행하였습니다. 왜냐하면 FK(외래키) 때문에 DML 명령어 사용 시 제약이 많이 발생하기 때문입니다.
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 설계하였고,
부족한 점은 계속해서 수정 보완할 계획입니다
'Computer Science > Database' 카테고리의 다른 글
Connection Pool (0) 2021.07.24