🎁 모든 강의 30% + 무료 강의 선물🎁

[인프런 워밍업 클럽 3기 - 백엔드 프로젝트] 1주차 발자국

[인프런 워밍업 클럽 3기 - 백엔드 프로젝트] 1주차 발자국

인프런 워밍업 클럽이 시작되었다..!
평소 코틀린 + 스프링에 관심이 있었는데 좋은 기회로 참여할 수 있어서 너무 좋다.🤗

또 평소 nestjs만 사용했어서 스프링은 처음이라 기대가 되었다.

 

강의

1주차 강의는 이론 위주였다.

  • 강의에서 같이 만들 프로젝트를 미리 살펴보았다.

  • 웹과 데이터베이스 개발 기본 개념에대해서 다루었다.

  • 프로젝트 초기 세팅과 엔티티 뼈대를 만들었다.

코틀린 문법, 나아가 자바 문법도 안쓴지 오래되어서 따라가기 벅차지 않을까 걱정했는데 강의에서 간단한 문법만 사용하고, 잘 설명해주셔서 문제없었다. 또 진행하면서 스프링의 동작에 대해서도 알아갈 수 있어서 참 좋았다. 스프링이 처음이어서 강사님이 설명해주시는 내용애 대해 강의 자료에도 있지만, 그보다 더 자세하게 나만의 강의 노트에 정리했다.

강의 진도에 밀리지 않고 미리 듣고 과제를 할 때 생각하는 시간을 더 갖자는게 목표였는데, 첫주차 강의는 진도보다 미리 다 들어서 목표 달성에 성공했다. 하지만 이 2주차에도 이어가려면 지금 발자국을 작성하는 이 시간에도 진도가 나가있어야하는데 많이 나가진 못해서 아쉽다. 이 발자국을 다 작성하고 나서 더 공부할 것이다.ㅎㅎ

 

미션

1주차 미션은 두가지 였다.

  • [미션1] 깃허브 리포지토리에 프로젝트 올리기

  • [미션2] 테이블 설계하기

     



    [미션1]은 강의에서 코틀린 프로젝트를 만들어본 것과 똑같이 프로젝트를 생성하고 올리기만하면 되어서 간단했다. 그보다 어떤 프로젝트를 할 지 고민이 많았는데, 평소 음악을 좋아해서 플레이리스트 공유 서비스 프로젝트로 선택했다. 비슷한 프로젝트를 프론트로서 참여한 적이 있는데 백엔드 입장에서 설계해보면 또 다른 느낌일 것 같다는 이유도 있다.

    [미션2]는 테이블 설계였다. 먼저 사용자는 여러개의 플레이리스트를 만들 수 있다는 1대다 관계에서 시작했다.

    그런데 음악 데이터는 어떻게할지 고민이되었다. 일단 사용자와 플레이리스트 관계에 집중하고 음악 데이터는 초기 DB에 gpt 등을 이용해 데이터를 추출해 가지고 있기로 결정했다. 그렇게 member(사용자), Track(음원), Playlist(플레이리스트)의 새 개의 테이블을 먼저 설계했다. 하지만 설계하다보니 고민거리가 있었다.

    member -> playlist (1:N)
    사용자(member) 와 플레이리스트(playlist) 간의 관계를 설계할 때, 처음에는 member 테이블에도 playlist의 FK를 두는 것을 고려했었다. 하지만 이럴 경우 member가 여러 플레이리스트를 가질 때마다 동일 사용자의 정보가 중복되어 여러 행이 생성된다. 그래서 member가 아닌 playlist 테이블 쪽에만 member의 FK를 두는 형태로 수정했다.

     

     

    playlist <-> track (N:M)

     

     

    playlist에 여러 track_id가 여러개 물릴 수 있으니 해당 테이블에 같은 id로 여러 행이 반복되었다. 따라서 playlist_id와 track_id를 FK로 가지는 중간 테이블 Track_Playlist를 만들게되었다. 중간 테이블이 생기니 playlist와 track 테이블에 중복되는 데이터가 사라졌다.



    🍀 마무리

인프런 워밍업 클럽 1주차가 마무리되었다. 2주차 부터는 강의도 과제도 본격적으로 개발에 들어가게된다. 더 열심히 참여할 수 있도록 해야겠다! 화이팅!

댓글을 작성해보세요.


채널톡 아이콘