[Node] mySQL과 Sequelize를 이용한 데이터베이스 설정

BE/NodeJS 2023. 5. 14.
  • 패키지 설치(mysql2, sequelize, sequelize-cli)
  • 프로젝트의 이상적인 구조를 만들기 위한 디렉토리 및 파일 생성 
  • DB 정보 설정
  • 데이터베이스 생성
  • 테이블, 모델 생성
  • 데이터베이스에 테이블 생성

⛔️ 이 글 보다는 다음 글을 참고하는 것을 권장합니다.

 

 

[TypeScript] 타입스크립트로 sequelize를 활용하여 데이터베이스 연결

준비사항: express, @types/express, mysql2, sequelize, sequelize-cli, dotenv 시작하기 sequelize init으로 config, migrations, models, seeders디렉토리를 생성한다. 이 디렉토리들을 src 디렉토리 안에 넣어도 괜찮고, 밖에

developer-holychan.tistory.com

 


패키지 설치

VSCode 터미널에서 npm install mysql2 sequelize sequelize-cli 입력하여 설치

 

 

디렉토리 및 파일 생성

VSCode 터미널에서 npx sequelize init 입력

config, models, migrations, seeders 디렉토리 생성된다. (각 폴더에는 데이터베이스 설정과 관련된 파일이 존재한다)

config, models, migration, seeders 생성

 

 

데이터베이스 정보 설정

config 디렉토리 안에 있는 config.json 파일에는 객체 하나가 존재하는데 그 안에는 총 3개의 프로퍼티 객체가 존재한다.

그 중 development 프로퍼티 객체의 내용을 다음과 같이 수정. ( ${} 으로 표시한 것들은 알아서 작성)

 

세 가지 프로퍼티 가 존재하는 이유: 더보기

더보기

development 프로퍼티 객체는 개발용

test 프로퍼티 객체는 테스트용

production 프로퍼티 객체는 배포용

 

이 세 가지가 존재하는 이유는 보통 개발용 테스트용 배포용으로 세 가지 경우에 대해서 따로따로 하기 때문이다.

// config/config.json

  "development": {
    "username": "root",  // 글쓴이는 username이 root 입니다.(기본: root)
    "password": ${},  // mySQL 설치 시 작성한 비밀번호
    "database": ${},  // 데이터베이스 이름
    "host": "127.0.0.1", 
    "dialect": "mysql"
  },

 

데이터베이스 생성

VSCode 터미널에 다음과 같이 작성 npx sequelize db:create 

 

테이블, 모델 생성 (이 글에서 데이터베이스의 이름은 client Info 이다.)

npx sequelize model:generate --name Info --attributes name:string,sex:string,emailAddress:string,mobilePhone:string,birthday:date 

(줄이 나눠졌지만 ...--attributes스페이스name... 이렇게 이어나가자.)

 

위 명령어를 실행하면 'Info'라는 이름의 모델이 생성되고, 이 모델에 대한 마이그레이션 파일도 migrations 디렉토리에 생성된다.

마이그레이션 파일은 데이터베이스 스키마를 버전 관리 하는 데 사용된다.

 

 

더보기: 데이터베이스 스키마(Database Schema)?, 컬럼(Column)?

더보기

데이터베이스 스키마(Datamase Schema)?

스키마는 데이터베이스의 구조와 제약 조건에 대한 전반적인 명세를 의미한다. 예를 들어, 테이블 이름, 각 테이블의 컬럼(Column)과 그 타입, 각 테이블 간의 관계 등을 정의하게 된다. 쉽게 말해서 '데이터베이스 스키마Schema'는 데이터베이스 청사진 (혹은 '틀', 혹은 '계획')이라고 할 수 있다. 

 

컬럼(Column)?

엑셀의 Column과 같다. 예를 들면 '이름', '이메일', '생일' 등이 컬럼에 해당한다.

표로 예를 들면 맨 윗 줄.

 

데이터베이스에 적용

VSCode 터미널에 npx sequelize db:migrate 작성

이렇게 하면 데이터베이스에 테이블이 생성된다.

 

 

이제 데이터베이스가 준비되었으므로, 이를 이용한 개발이 가능하다.