WIL 2021-10-25 ~ 2021-10-30

김기태·2021년 10월 31일
0

inSplace.

날씨, 인원수, 성별에 따라 서울 내 장소를 추천해주는 웹 어플리케이션.

MySQL

선택한 이유?
우선 inSplace의 프로젝트는 수많은 관계가 형성되어야 한다.
포스트 : 리뷰, 리뷰 삭제, 찜하기, 좋아요, 유저
리뷰 : 리뷰 좋아요, 리뷰 삭제, 유저
좋아요 : 포스트, 유저
유저 : mbti, 성별
방문했던 장소 : 포스트, 유저
mbti : ISTJ, ISFJ, ENTJ ...

이렇게 많은 관계를 가져야하고 관계들 사이에 무결성을 보장하기 위해 MySQL이 기존에 사용하던 NoSQL인 MongoDB보다 더 적당하다고 생각했고 선택했다.

선택한 Library

aws-sdk : S3에 접속하기 위해 설치.
axios : 외부 날씨 API를 사용해서 외부의 날씨를 가져오기 위해 설치.
bcrypt : 비밀번호 암호화를 위해서 설치.
cors : 클라이언트와 서버간의 보안정책에 위배되지않게 통신하기 위해 설치.
dotenv : 환경변수에 민감한 정보를 저장하고 유출되지 않게 하기 위해 설치.
express : 초기 서비스에 대한 빠른 확장성과 서버의 효율성을 위해 선택.
joi : Form을 검사하기 위해 선택.
jsonwebtoken : JWT 기반 로그인을 위해 선택.
multer-s3-transfor : S3에 이미지 업로드를 하고 압축을 위해 선택.
mysql2 : MySQL을 사용하기 위해 선택.
swagger-jsdoc : swagger 작성을 위해 선택.
swagger-ui-express : swagger를 서버에 띄우기 위해 선택.
winston-daily-rotate-file : winston으로 로그관리 하기 위해 선택.

이번 1주일 동안 배운 점.

데이터 베이스의 무결성 : 속성이 정의되어 있는 영역을 벗어나지 않도록 규정하는 것이다.
ex) 유저가 없는데 해당 유저의 댓글이 있는 경우.

MySQL Foreign Key : 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다.
1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야한다. (참조 무결성 제약조건)
2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있다.
3) 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다.
4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 한다.
외래키 옵션 : On Delete, On Update

스케쥴러 : cron 모듈을 사용해서 특정시간마다 스케쥴링을 할 수 있다.

각종 SQL문 : 서브쿼리, JOIN, ON, IN등 각종 쿼리문들을 조금 더 자세히 알게 되었다.

느낀점.

겨우 1주일이라고 느낄 수 있지만 이번 inSplace 프로젝트를 하는 동안
많은 것들을 배웠다.
다음 2주때는 과연 어느것을 더 배울지 굉장히 궁금하고 나 자신에게 기대된다.

profile
김개발

0개의 댓글