3. 관계형 데이터 실제로 만들어보기

코지클래식·2021년 9월 10일
0

Databse

목록 보기
3/3
  • 기초 이론과 CRUD를 배웠지만 뭘 어떻게 해야할지 헤매는 과거의 나에게.
  • 그리고 이걸 또 잊을지도 모르는 미래의 나에게

1. 데이터베이스를 만드는 과정

  1. 원래는.. 대략 기획 -> 어떤 기능을 이 필요한지 -> 흐름 그림으로 그려보기 -> 정확한 기능을 작성하고 -> 필요한 데이터베이스를 넣어보고 -> 서로의 관계를 그리는.. 과정이 필요하다.
  2. 여기선 AirBNB를 따라서 데이터베이스를 만들어 볼 것이기 때문에 기능은 이미 구현이 되어있다.
  3. 다른 사람들이 기존에 작업한 내용이 있을 것 같지만 다른 자료를 보지 않고 맨땅에 헤딩 후 비교를 해보려고 한다.

2. Work Flow차트 그려보기

  1. 호스트 / 고객은 가입을 한다는 전제 하에... 실제 사이트의 엔티티들이 어떤 식으로 작동할지 그림을 그려보았다.

  1. 대략 설명을 해보면,
    a. 호스트가 먼저 있어서 숙소를 등록한다. (여러개 등록 가능)
    b. 이후에 등록한 숙소들을 대상으로 날짜/금액 테이블을 집어넣고 예약정보를 만든다.
    c. 숙소에는 추가정보를 집어넣거나 관리할 수 있다.
    d. 고객은 숙소정보와 예약정보를 읽고, 예약 데이터를 만든다.
    e. 고객은 거래(결제) 데이터를 남길 수 있고, 후기 데이터를 남길 수 있다.

  2. 물론 실제로는 호스트와의 실시간 연결, 고객상담 등 추가 기능이 있겠지만 대략적으로는 이렇게 보인다.

3. 그렸던 flow대로 테이블을 분리해보기

  1. 2번에서 그렸던 Flow에 필요한, 그리고 에어비엔비에서 저장하고 있을 것 같은 대로 테이블을 분리해봤더니 대략 16개가 나왔다. (너무 적게 나온듯)
  2. 나름대로 테이블을 쪼개도 괜찮을 것 만큼 쪼갰는데, 잘 보면 이상한 점이 있다.
    숙소는 ID별로 메인테이블, 세부설명, 편의시설, 후기, 예약정보 , 사진 테이블을 전부 분리해둔 반면 ,, 호스트의 데이터는 그냥 테이블 하나로 묶어서 저장해 둔 것이다.
  3. 이는 개인적인 예상(!)으로 사람들이 숙소에 대해 조회를 많이하지 호스트에 대해서는 조회를 많이 하지 않을 거라는 생각으로 이렇게 만든 것인데, 데이터를 실제로 집어넣을 때 무슨 일이 일어날지는 지켜봐야 할 것으로 보인다.

4. 데이터베이스에 테이블 생성하기

  1. django-mysql 을 이용해서 위의 데이터를 집어넣으려고 models.py에 코드를 작성했다 ...

2. 별 생각 없이 스켈레톤(뼈대)를 만들고 나니 이상한 점을 깨달았다. 하나의 앱에서 이 모든 데이터를 연동시킨다고 ...? 기능을 어떻게 분리하지 ....? 하는 점이다.

...그렇다. 잘못 만들었다..... 대략 120줄 정도 노가다를 해놓고 깨달았다.

5. 빼먹은 것

  1. 나는 사용자들이나 데이터들 사이에 무슨 일이 일어날 것인지, 어떤 데이터가 필요한지는 생각했지만, 실제로 기능 (회원가입, 숙소만들기, 정보변경, 예약하기, 결제하기 등)이 발생할 때 서로 어떤 테이블이 오갈 것 인지에 대해서 고려하지 않았다.

  2. 이제 사용자 들이 무슨 기능어떤 데이터를 주고 받으면서 작동시킬지에 대해서 다시 그림을 그려보고, 앱(작동 클래스)를 분리시키고 다시 데이터베이스 모델을 만들러 가겠다.

  3. CRUD에 대해서만 배운다던가, 인터넷강의 등으로 1시간/30분만에 만드는 간단한 기능구현! 만 해보다가, 조금 더 복잡한 작업을 시작했을 뿐인데 이렇게 헤맨다. 스스로 한심하기도 하고 약간 설레기도 한다. 화이팅

profile
코지베어

0개의 댓글