본문 바로가기

Project/Gathering

Gathering 기획 3

앞에서 정리한 내용대로

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

 

설계 주요 포인트

  1. 사용자 테이블 (User)
    • 사용자 정보를 관리하며, 소셜 로그인(구글, 네이버, 카카오 등)을 구분할 수 있도록 user_type 필드를 추가했다.
    • user_no를 기본 키로 사용해, 모든 사용자 데이터를 중심적으로 연결할 수 있게 설계했다.
  2. 게시판 (Post)와 모집 관리 (Gather)
    • Post 테이블은 사용자들이 게시글을 작성할 수 있도록 설계했고, 모집 정보를 연결하기 위해 Gather 테이블을 분리했다.
    • Gather 테이블에서는 모집 역할(gather_role), 모집된 인원(current_participants), 최대 모집 인원(max_participants), 상태(status)를 관리해 모집 상황을 동적으로 표현할 수 있도록 했다.
  3. 관심사 관리 (Interest)
    • 사용자는 관심사를 복수로 선택할 수 있으므로, 다대다(Many-to-Many) 관계를 표현하기 위해 Interest와 User_Interest 테이블을 분리했다.
    • Interest 테이블은 고정된 관심사 목록을 저장하며, User_Interest 테이블은 특정 사용자가 어떤 관심사를 선택했는지 기록한다.
  4. 검색 기록 관리 (Search_History)
    • 사용자의 검색 데이터를 추적하고, 최근 검색어를 저장하기 위해 Search_History 테이블을 설계했다.
    • search_term 필드로 검색어를 저장하고, search_date로 검색 시각을 기록해 검색 분석 및 사용자 편의 기능(최근 검색어 등)을 지원할 수 있다.
  5. 알림 기능 (Notification)
    • 사용자의 활동과 관련된 알림 메시지를 제공하기 위해 Notification 테이블을 설계했다.
    • 알림 메시지(message)와 읽음 여부(is_read)를 관리해 사용자가 읽은 알림과 읽지 않은 알림을 구분할 수 있도록 했다.
  6. 댓글 기능 (Comment)
    • Comment 테이블은 게시판 댓글 및 대댓글 기능을 지원한다.
    • comt_group과 comt_class 필드를 활용해 대댓글의 계층 구조를 간단하게 표현했다. 이를 통해 특정 게시글의 댓글과 댓글 그룹을 효과적으로 관리할 수 있다.
  7. 대외활동 정보 관리 (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