앞에서 정리한 내용대로
ERD를 만들어 보았다.
erd가 잘 보이지 않을 수 있어, 링크까지 첨부한다.
https://www.erdcloud.com/d/zcA9DF5Y9759FhTvK
gathering
Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.
www.erdcloud.com
설계 주요 포인트
- 사용자 테이블 (User)
- 사용자 정보를 관리하며, 소셜 로그인(구글, 네이버, 카카오 등)을 구분할 수 있도록 user_type 필드를 추가했다.
- user_no를 기본 키로 사용해, 모든 사용자 데이터를 중심적으로 연결할 수 있게 설계했다.
- 게시판 (Post)와 모집 관리 (Gather)
- Post 테이블은 사용자들이 게시글을 작성할 수 있도록 설계했고, 모집 정보를 연결하기 위해 Gather 테이블을 분리했다.
- Gather 테이블에서는 모집 역할(gather_role), 모집된 인원(current_participants), 최대 모집 인원(max_participants), 상태(status)를 관리해 모집 상황을 동적으로 표현할 수 있도록 했다.
- 관심사 관리 (Interest)
- 사용자는 관심사를 복수로 선택할 수 있으므로, 다대다(Many-to-Many) 관계를 표현하기 위해 Interest와 User_Interest 테이블을 분리했다.
- Interest 테이블은 고정된 관심사 목록을 저장하며, User_Interest 테이블은 특정 사용자가 어떤 관심사를 선택했는지 기록한다.
- 검색 기록 관리 (Search_History)
- 사용자의 검색 데이터를 추적하고, 최근 검색어를 저장하기 위해 Search_History 테이블을 설계했다.
- search_term 필드로 검색어를 저장하고, search_date로 검색 시각을 기록해 검색 분석 및 사용자 편의 기능(최근 검색어 등)을 지원할 수 있다.
- 알림 기능 (Notification)
- 사용자의 활동과 관련된 알림 메시지를 제공하기 위해 Notification 테이블을 설계했다.
- 알림 메시지(message)와 읽음 여부(is_read)를 관리해 사용자가 읽은 알림과 읽지 않은 알림을 구분할 수 있도록 했다.
- 댓글 기능 (Comment)
- Comment 테이블은 게시판 댓글 및 대댓글 기능을 지원한다.
- comt_group과 comt_class 필드를 활용해 대댓글의 계층 구조를 간단하게 표현했다. 이를 통해 특정 게시글의 댓글과 댓글 그룹을 효과적으로 관리할 수 있다.
- 대외활동 정보 관리 (External_Act)
- 외부 활동 정보를 저장하기 위한 External_Act 테이블을 설계했다.
- 활동명, 링크, 주최 기관, 시작일/종료일 등의 데이터를 포함해 활동 정보를 체계적으로 저장한다. 삭제된 활동을 관리하기 위해 ex_delete와 대외활동을 어디서 크롤링했는지 확인하기 위한 ex_flag 필드도 추가했다.
이 설계를 기반으로 데이터베이스를 구축해 구현을 시작하며, 추가적인 사항이 생기면 점진적으로 확장해 나갈 계획이다.
이제 이를 통해서 spring boot를 이용한 백엔드 코드를 작성해볼 예정이다.
728x90
'Project > Gathering' 카테고리의 다른 글
Crawling 버그 수정 및 개선 (0) | 2024.12.18 |
---|---|
Gathering Backend 구현 1 (프로젝트 생성 및 엔티티 설계) (0) | 2024.11.26 |
Gathering 기획 2 (0) | 2024.11.16 |
Crawling 서버 구현 (1) | 2024.11.12 |
Crawling 구현 2 (0) | 2024.11.11 |