본문 바로가기

개인프로젝트 - TripSet

Project (09.01) - DB 설계(1)

1. 기능 정리

기획을 하고, 디자인을 구상하면서 강사님이 보내주신 예시를 바탕으로 기능 정리를 해보았는데, 사실 아직 부분부분 수정할 부분은 너무 많고, 날씨기반 스타일링은 좀 더 생각을 해보아야겠지만, 생각만 한다고 될 것같지는 않아서 기능 구현 하면서 상황을 본 뒤 결정해야될 것 같다. 일단 현재 생각은 사용자에게 받은 정보를, gpt에게 넘기고 이를 기반으로 네이버 쇼핑인사이트 api에서 정보를 받아올 수 있나.. 한번 시도를 해봐야 확실히 감이 잡힐 것같음..

그럼 일단, 맞춤형 여행지 추천하는 기능도 비슷한 방식(?)일테니 해보고 다시 정리하면 될 듯...

2. 개념적 설계 (ERD 작성)

개념적 설계는 시스템의 요구사항을 반영하여 데이터베이스에 저장될 주요 entity와 entity 간의 관계를 정의하는 과정!
ERD(Entity-Relationship Diagram) 형태로 표현할 것이며, ERD는 데이터베이스의 구조와 데이터를 시각적으로 표현하여 설계자가 데이터 모델을 쉽게 이해할 수 있게 된다.

 

객체 (entity) : 데이터베이스에 저장할 주요 객체
속성 (Attribute) : entity는 여러 개의 속성을 가지며, 속성은 entity의 특정 데이터를 저장하는 데 사용된다.
관계 (Relationship) : entity들이 어떻게 연결되어있는지, 1:1, 1:N, N:M

 

요구사항 분석을 통한 주요 객체(entity)

1. member (회원)

  • 회원 정보를 저장하는 객체이다. member 고유 id, 가입날짜, 회원정보수정날짜, 로그인아이디, 비밀번호, 권한레벨, 이름, 닉네임, 전화번호, 이메일, 탈퇴 여부, 탈퇴 날짜
  • 회원 정보를 관리해야하고, 사용자는 여행 계획 및 일정, 맞춤형 추천 등 다양한 기능을 사용하기 위해 회원으로 등록해야한다.

 

2. 여행일정관리

  • 사용자가 생성한 여행 일정 정보를 저장하는 객체이다. 여행일정 고유 id, memberid(member 테이블), 여행시작날짜, 종료날짜, 작성일자, 일정 수정한 일자, 여행지역id, 여행의 현재 상태(status), 삭제 여부, 삭제 날짜
  • 로그인한 사용자가 다양한 여행 일정을 생성하고 관리할 수 있어야 하며, 각 일정에 대한 상태와 정보를 저장해야 한다.

3. 일정상세항목관리

  • 여행 일정에 대한 세부 정보를 저장하는 객체이다. 상세항목id, 여행일정id(여행일정관리 테이블), 여행장소이름, 여행장소주소, 일정에 대한 설명, 이전 장소와의 거리, 예상 소요 시간, 예약 정보, 생성일자, 수정일자, 체크리스트 Id (체크리스트 테이블)
  • 로그인한 사용자가 여행 일정에 대한 자세한 정보를 추가하고 관리할 수 있어야 한다.

 

4. 체크리스트

  • 사용자가 여행을 준비하면서 체크한 체크리스트 정보를 저장하는 객체이다. 체크리스트 id, memberId(membertable), 체크리스트 항목, 여행일정id(여행일정관리 테이블), 체크 여부

5. 맞춤형 여행지 : 맞춤형 여행지 추천 정보를 저장하는 객체이다. 추천id, memberId(member 테이블), 여행지역, 여행지역id, 지역에 관한 정보, 이미지 url(api),

 

6. 맞춤형 여행지(사용자 입력) : 사용자 입력id, 체크리스트(여행지) 항목 번호, 체크 여부(boolean), who, region, traveldate, travelstyle, travelschedule 목적지 주소 code(관련 데이터 타입 코드- 동), 목적지 주소 id(관련 데이터 번호 - 동) -> gpt가 추천 주소 제공 시 하나의 동 내에서만 여행일정을 보내줄 수 있도록

 

7. 날씨 기반 스타일링 추천 : 날씨를 기반으로 한 옷 스타일링 추천 정보를 저장하는 객체이다.

  1. 스타일링(날씨) : 날씨id, regDate, updateDate, 현재날짜, 현재온도, 체감온도, 현재날씨id, 지역id
  2. 스타일링(사용자 입력) : 사용자 입력id, 체크리스트(스타일링) 관련 데이터 타입 코드, 체크리스트(스타일링) 항목 번호, 체크 여부(boolean), gender, age, style, travelActive, 지역id
  3. 스타일링(옷정보) : 옷정보id, regDate, updateDate, name, brand, imageUrl, 지역id, 의류 종류, memberId(member 테이블)
    스타일 설명

 

여기서 사용자한테 받은 체크리스트들은 어떻게 처리하면 좋을까.. 하나하나 입력해야하는 건가

 


 

  • 회원은 여러 개의 여행 일정을 가질 수 있다.
  • 회원은 한 여행 일정에 한 개의 체크리스트를 가질 수 있다.
  • 회원은 여러 개의 여행지 추천을 받을 수 있다.
  • 회원은 여러 개의 스타일링을 추천 받을 수 있다.
  • 하나의 여행 일정은 여러 개의 상세 일정을 가질 수 있다.