마이허니트립 | 데이터베이스 모델링

2022. 8. 4. 12:56·wecode
반응형

2차 프로젝트 참고 사이트는 마이리얼트립이다. 숙소는 빼고 항공권 부분만 구현하기로 했다. 

앱은 users, flights, bookings세개로 나누었다.

 

users

로그인/회원가입은 카카오 소셜 로그인을 이용해서 구현하기로 했는데

항공권 예약할때 예약자 정보와 탑승객 정보를 따로 받기 때문에 회원가입때는 많은 정보를 받을 필요가 없어서 이름(카카오 닉네임), 이메일만 회원정보에 저장하기로 했다.

 

그런데 이메일은 카카오에서 필수선택으로 지정할 수 없게 돼있어서(검수가 필요하다) 유저의 이메일값은 null=True속성을 주었다.

그리고 카카오 로그인을 하면서 유저가 회원인지 확인할 때는 카카오의 id값으로 구분하기로 했다. 그래서 kakao_id라는 컬럼을 추가했다.

나중에 추가적으로 결제를 구현할 경우를 대비해서 point컬럼을 추가하고 기본값으로 1억포인트를 줬다.

 

카카오id를 bigint로 저장해서 카카오토큰으로 카카오id-우리유저의 카카오id를 비교하고 그후에 우리id를 이용해 토큰을 발급해서 사용하는 방법으로 구현

 

from django.db   import models

from core.models import TimeStampModel

class User(TimeStampModel): 
    name     = models.CharField(max_length=50)
    email    = models.CharField(max_length=200, unique=True, null=True)
    kakao_id = models.BigIntegerField()
    point    = models.DecimalField(max_digits=20 ,decimal_places=2, default=100000000)

    class Meta: 
        db_table = 'users'

 

flights

locations-location_images

비행기 출발/도착지 장소들과 이미지 테이블

목적지는 허니문 여행지 네개만 하기로 했다.

 

flight_routes

항공편명같은거. 같은 편명은 항상 같은 출도착지를 가진다.

 

flight_details

비행 상세정보. 시간, 가격과 좌석수 정보가 있다.

 

airplanes

비행기 정보(기종, 좌석수)

 

airlines

항공사정보. 우리는 항공사를 두개만 넣고 details데이터를 많이 넣기로 했다.

 

bookings

bookings-booking_statuses

마이리얼트립 홈페이지는 유저정보와 예약자정보를 다르게 할 수 있어서 우리도 예약자정보를 따로 bookings에 저장했다.

원래는 users-bookers-bookings로 이어지는 구조였지만 유저와 부커가 중요한게 아니고 user와 예약내역을 이어주는것이 중요한 거라서 users-bookings-bookers로 구조를 변경했다가 예약자정보를 예약내역에 넣는 것으로 변경했다.

예약상태는 예정된 여행, 지난여행, 취소된 여행으로 나눠진다.

 

passengers

여러명이 한 예약으로 같은 여정을 예약할 수 있다. 그래서 예약과 승객은 일대다 관계로 연결해줬다.

 

tickets-ticket_statuses

편도 항공권은 한 승객당 티켓 1장, 왕복은 한 승객당 티켓 2장이다.

부분취소할 경우를 생각해서 티켓상태 테이블도 따로 만들어주었다.

예약의 총 가격은 bookings에 넣지 않고 tickets가격을 계산해서 넘겨주는걸로 하기로 했다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'wecode' 카테고리의 다른 글

마이허니트립 | 카카오 로그인 api : 카카오 인가코드로 토큰발급받기  (0) 2022.08.05
마이허니트립 | 카카오 로그인 api : 카카오 토큰으로 유저정보 받아서 회원가입, 로그인 시키기  (0) 2022.08.04
구방문방구 | 프로젝트 회고  (1) 2022.08.01
구방문방구 | orm최적화(MainPageView, ProductListView)  (0) 2022.07.31
구방문방구 | 상품목록 페이지네이션(offset, limit), 검색  (0) 2022.07.30
'wecode' 카테고리의 다른 글
  • 마이허니트립 | 카카오 로그인 api : 카카오 인가코드로 토큰발급받기
  • 마이허니트립 | 카카오 로그인 api : 카카오 토큰으로 유저정보 받아서 회원가입, 로그인 시키기
  • 구방문방구 | 프로젝트 회고
  • 구방문방구 | orm최적화(MainPageView, ProductListView)
이라후
이라후
  • 이라후
    화이팅
    이라후
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • TIL (23)
      • 기타 (26)
      • Python (14)
      • Django (10)
      • JavaScript (8)
      • git & GitHub (8)
      • Web (10)
      • Go (3)
      • wecode (31)
  • 반응형
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이라후
마이허니트립 | 데이터베이스 모델링
상단으로

티스토리툴바