스파르타 최종 프로젝트 1주차

이정기·2023년 3월 3일
0

TIL

목록 보기
52/71

nest.js으로 프로젝트를 만들기로 결정했다. 그래서 팀원들은 부랴부랴 nest 스터디를 가졌다. 프로젝트 환경설정도 하고, ERD 도 피드백 받으면서 다음 주엔 프로젝트를 바로 시작할 수 있도록 세팅도 했다.

스터디 중 나왔던 오류들을 정리

팀원 중 한명 typeorm 연결 에러

팀원 중 한명이 typeorm 엔티티와 레포지토리 설정 후, 실행을 시켰는데 데이터베이스 연결 오류가 났다.
1. .env 파일 ""(값 안에 큰 따옴표) 제거
2. mysql 아이디 비밀번호 재설정
3. 환경 변수 설정
4. 호스트 경로 :001 주석처리
5. 필요없는 코드 제거 등등

여러 가지 시도를 해봤는데 되지 않아 심지어 도커까지 도입했다.

결국, 문제는 .env 파일안에 코드를 줄바꿈할 때, ','(쉼표) 를 적어 연결 오류가 났었다. 쉼표 때문에 반나절을 삽질했던 경험이였다.

도커 사용방법

우연히 간단한 도커 사용법 까지 알게 됐다.

  • 적당한 경로에 github 자료 클론

  • 해당 경로 안에 .env.~ 파일을 카피해서 .env 파일 생성

  • vi 텍스트 편집기로 docker-compose 열고 정보들 편집(도커 이미지와 환경변수 선택)
    실행시키면 도커 허브에 도커 이미지가 올려져 있다. 다운로드 하면 local 도커 컨테이너에 작은 가상 환경이 만들어지고 mysql 서버가 실행된다.

  • ./start.sh 로 도커 실행

  • 2 번째로 실행

도커를 사용해서 mysql 은 연결되었지만, vscode에서 nestjs 를 실행시키면 데이터베이스 연결 오류가 났었다. 결국 쉼표를 마지막에 발견해서 해결됐다..

ERD N:M 관계의 기준

유저와 장바구니의 관계를 계속 생각하고 있다. 튜터님께도 듣고, 생각한 관점을 정리하자면

  • 유저는 장바구니를 한개 씩 가지고 있으므로 1:1 관계이다.
  • 유저는 파티을 선택할 때마다 table에 row가 쌓이므로 1:N 관계이다.
  • 파티는 장바구니에 여러개 넣을 수 있으므로 1:N 관계이다.
  • 장바구니 관점으로 봤을 때, 파티와 장바구니는 1:1 관계이다. (아직 이부분은 이해 안된다.)
    이렇게 의견이 갈렸다.

보는 관점에 따라 관계가 바뀌어 복잡하던 찰나,좋은 예시를 들었는데 기준을 누가 더 많이 쓰냐(물리적 관점)으로 생각해보라는 것이였다.

만약 User와 WishLists , Parties 관계를 생각했을 때, Parties가 장바구니를 담는게 아닌 User가 Parties 를 장바구니에 담는것이기 때문에... 엥 생각해보니 이부분은 join 문을 어디에 사용할지 생각하는 것이 아닌가.. 오늘은 늦었으니 다시 생각해보고 수정해보자..


DB관계이해 블로그
여기 블로그 글을 보고 확실히 이해할 수 있었다.
테이블의 레코드를 얼마나 더 많이 참조하느냐에 따라 1:N 관계가 정해진다는 기준을 잡으면 될 것 같다.

예시로 User는 WishLists 의 모든 레코드를 필요하지만, WishLists는 User 의 세세한 정보까진 필요 없다. 그렇기 때문에 User 와 WishLists 는 1:N 관계이다.

이런식으로 정의해나가면 될것같다!

profile
Node.js 로 꿈을 꾸었다..

0개의 댓글