Spring

반려견 돌봄 서비스 (1) - ERD 작성

인성코린이 2024. 11. 26. 02:22

스프링 기반 반려견 돌봄 서비스 프로젝트 소개 🐾

1. 프로젝트 개요

실제로 집에서 현재 반려견을 키우고 있기도 하고, 프로젝트 주제를 선정을 하는 과정에서 나의 실제 일상생활 상황에 대입해서 개발을 하면 재미와 흥미를 갖고 할 수 있을 것 같아 반려견 돌봄 서비스로 주제를 선정하게 되었다.
반려견 인구 1,500만 시대에 접어들며, 반려견 돌봄 서비스에 대한 수요가 증가하고 있다.
이러한 니즈를 충족시키기 위해 **스프링(Spring)**과 **자바(Java)**를 활용하여 사용자 친화적인 반려견 돌봄 서비스를 개발하기로 했다.
이 서비스는 반려견의 케어 기록 관리, 돌봄 일정 예약 등의 기능을 제공하여 사용자와 돌봄사와 상호작용할 수 있는 플랫폼을 목표로 하고 있다.
 


2. 주요 기능

이 서비스는 아래와 같은 주요 기능을 포함한다.

  • 반려견 프로필 관리: 반려견의 이름, 나이, 품종, 건강 상태 등을 저장 및 조회 가능
  • 사용자 프로필 관리: 사용자의 이름, 나이, 역할(고객, 돌봄사), 소개, 돌봄사의 평점(돌봄사인 경우), 자체 로그인 & 소셜 로그인
  • 돌봄 가능한 날짜: 돌봄사가 돌봄 가능한 날짜를 직접 관리
  • 돌봄 일정 예약: 사용자가 원하는 날짜와 시간에 반려견 돌봄 예약
  • 케어 로그 관리: 반려견의 산책, 식사, 운동 등의 기록 관리
  • 리뷰 및 평점: 돌봄사에 대한 리뷰 작성 및 별점 평가
  • 관리자 페이지(회원 관리, 예약 관리, 돌봄 케어 로그 관리, 돌봄 리뷰 관리 회원 포인트 내역 관리): 부적절한 회원, 예약, 돌봄 케어 로그, 돌봄 리뷰를 삭제할 수 있으며 모든 회원의 포인트 적립/사용 내역을 관리

3. 시스템 설계

ERD(Entity Relationship Diagram) 소개

해당 프로젝트의 데이터베이스는 반려견 정보사용자 정보예약 정보커뮤니티 게시판 등의 테이블로 구성된다. 아래는 ERD 설계의 주요 구조 설명이다.
 

주요 테이블 구성
  • Member: 사용자 계정 정보
  • Pet반려견의 프로필 정보
  • Certification: 돌봄사의 자격증
  • Care_Available_Date: 예약 가능 날짜(돌봄사)
  • Customer_Reservation: 돌봄 예약 정보(고객)
  • Sitter_Schedule: 돌봄 예약 정보(돌봄사)
  • CarLog: 반려견의 돌봄 기록
  • Article & Comment & Recommend: 커뮤니티 게시판과 댓글 시스템 + 추천
  • Review: 돌봄 제공자에 대한 리뷰와 평점
  • Points_History: 회원의 포인트 적립/사용 내역 히스토리
  • Chat_Room: 채팅방
  • Chat_Message: 채팅방 메시지
  • Pet_Hospital: 동물 병원

ERD 상세 설명

 

반려견 돌봄 예약 시스템의 엔티티 관계

 

1. Member (회원)

  • Member 테이블은 사용자의 정보를 관리
    • 다른 테이블과의 관계:
      • Pet(반려견) 테이블과 1:N 관계: 한 사용자는 여러 반려견을 등록 가능
      • Customer_Reservation(돌봄 예약, 고객) 테이블과 1:N 관계: 한 사용자는 여러 예약을 가능
      • Care_Available_Date(예약 가능 날짜) 테이블과 1:N 관계: 한 돌봄사는 여러 시간대를 제공

2. Certification (돌봄사 자격증)

  • 돌봄사의 자격증을 관리
    • Member와 N:1 관계: 회원(Member)은 여러 개의 자격증(Certification)을 가질 수 있다

3. Pet (반려견)

  • 반려견의 정보를 관리
    • Member와 N:1 관계: 반려견 소유자(고객)와 연결 (한 회원은 여러 반려견 등록 가능)
    • Customer_Reservation(돌봄 예약, 고객)과 1:N 관계: 한 반려견은 여러 예약을 가능

4. Customer_Reservation (돌봄 예약, 고객 시점)

  • 반려견 예약 정보를 관리
    • Pet(반려견)과 N:M 관계: 예약은 특정 반려견과 회원을 기준으로 이루어짐 (한 예약은 한 명의 고객의 여러 마리 반려견 돌봄 예약 가능, 반려견 입장에서는 한 마리의 반려견이 여러 예약에 등록 가능), Pet(반려견)과 중간 매핑 테이블이 필요. (예: 고객 A가 반려견 2마리(P1, P2)를 가지고 있을 때, P1만 예약에 포함하거나, P1과 P2 둘 다 포함할 수 있음) 
    • Member와 N:1 관계 : 한 명의 회원은 여러 예약이 가능하지만, 예약 입장에서는 하나의 예약에는 한 명의 회원만 존재 가능
    • Sitter_Schedule(돌봄 배정, 돌봄사 시점)과 1:1 관계: 예약은 돌봄 배정 테이블과 연결됨 (식별 관계, 한 예약은 하나의 돌봄 배정과 연결됨)
    • Review(돌봄 리뷰)와 1:1 관계: 예약에 대한 리뷰 작성이 가능
    • Points_History(적립금 히스토리)와 1:N 관계: 예약이 발생하면서 예약금이 적립이 되고, 사용한 경우 적립 + 사용까지 가능

5. Sitter_Schedule (돌봄 배정, 돌봄사 시점)

  • 돌봄 예약에 따라 배정된 내용을 관리
    • Customer_Reservation(돌봄 예약, 고객 시점)과 1:1 관계: 특정 예약 건에 대해 배정이 이루어짐 (한 배정은 하나의 예약과 연결됨)
    • CareLog(케어 로그)와 1:N 관계: 배정된 활동에 대한 기록을 관리 (한 배정은 여러 케어 로그를 가질 수 있음)

6. CareLog (케어 로그)

  • 돌봄 활동 로그를 기록.
    • Sitter_Schedule(돌봄 배정, 돌봄사 시점)와 N:1 관계: 돌봄 배정에 따라 발생한 활동을 기록, 추적 (하나의 돌봄 배정에 여러 케어 로그가 있을 수 있음)

7. Review (리뷰)

  • 돌봄 예약에 대한 리뷰를 관리
    • Member(사용자)와 N:1 관계: 하나의 사용자가 여러 리뷰를 작성할 수 있음
    • Customer_Reservation(돌봄 예약, 고객 시점)과 1:1 관계: 해당 예약 건에 대해 작성된 리뷰 (하나의 예약에 대해 하나의 리뷰만 작성 가능)

8. Care_Available_Date (예약 가능 날짜,  돌봄사)

  • 돌봄사의 예약 가능 시간을 관리
    • Member(돌봄사)와 N:1 관계: 특정 돌봄사의 돌봄이 가능한 시간대를 관리 (하나의 돌봄사는 여러 예약 가능 시간을 가질 수 있음)

 

9. Points_History (회원 포인트 적립/사용 히스토리)

  • 회원의 포인트 적립/사용 내역을 모두 저장
    • Customer_Reservation(돌봄 예약, 고객 시점)와 N:1 관계: 특정 예약이 발생하면 적립이 무조건 되고, 만약 해당 예약 건에 적립금 사용 여부에 따라 추가 저장(사용 내역) 가능

 

10. Chat_Room(채팅방)

  • 회원들의 채팅방을 관리
    • Sender(발신자, member)와 1:N 관계: 회원은 여러 채팅방에 참여할 수 있음.
    • Receiver(수신자, member)와 1:N 관계: 회원은 여러 채팅방을 구독할 수 있음.

 

11. Chat_Message (채팅 메시지)

  • 회원들이 채팅방에 전송하는 메시지 내역을 모두 저장 및 관리
    • Chat_Room(채팅방)와 1:N 관계: 하나의 채팅방에 여러 개의 메시지가 생성되어 저장될 수 있음.
    • Sender(발신자, member)와 1:N 관계: 회원은 채팅방에서 여러 메시지를 전송할 수 있음.
    • Receiver(수신자, member)와 1:N 관계: 회원은 채팅방을 구독하여 여러 메시지를 수신할 수 있음.

4. 기술 스택

Backend

  • Framework: Spring Boot 3.3.4
  • Language: Java 17
  • Database: H2 database, Mysql
  • ORM: JPA, QueryDSL, JPQL
  • Build Tool: Gradle JVM 17

Frontend

  • Template Engine: Thymeleaf
  • CSS Framework: Bootstrap

5. 프로젝트 기대 효과

  • 사용자와 돌봄사 간의 신뢰 기반 서비스 구축
  • 반려견 돌봄 기록의 디지털화로 관리 효율성 증대
  • 반려견 관련 커뮤니티 활성화

앞으로 추가해보고 싶은 기능

  • 실시간 채팅 기능(고객과 돌봄 배정된 돌봄사 간, + 개발 완료)
  • 알림 서비스

 
이 프로젝트는 반려견을 키우는 사용자와 돌봄사 모두에게 만족을 줄 수 있는 서비스로 발전시키는 것이 목표입니다.
모두 다 가능하게 될지는 장담 못하겠지만 되는 곳까지 최선을 다해보도록 하겠습니다!!