데이터 베이스와 SQL, ORM

iberis2·2024년 2월 11일

Database

일정한 체계 속에 저장된 데이터의 집합

  • 하나의 컴퓨터에서도 여러 개의 데이터베이스를 생성할 수 있고, 하나의 데이터베이스 안에서는 여러 개의 테이블을 만들 수 있다.

  • table: 표 형태로 저장된 데이터의 집합

  • row : 테이블에서 하나의 개체를 나타낸다,

  • column: 개체의 각 속성을 나타낸다.

DBMS

DataBase Magement System : 데이터베이스 관리 시스템을 의미한다.
사용자가 입력한 SQL을 해석해서 데이터베이스 작업(CRUD)을 수행한다.

  • MySQL 등의 많은 DBMS는 '서버- 클라이언트' 구조로 동작한다.

SQL

Structured Query Language : DBMS를 다루기 위해 사용하는 언어

  • 데이터를 다루는 기본 주요 기능들은 DBMS 마다 큰 차이가 없지만, 경우에 따라 DBMS 마다 표준과는 조금 다른 형식의 SQL 문 또는 표준에는 없는 SQL문을 사용하기도 한다

ORM

Object Relational Mapping: 데이터베이스에 있는 데이터를 코드 상의 객체에 대응시켜서, 객체를 다루는 코드를 통해 데이터베이스 작업을 수행할 수 있도록 해주는 기술을 총칭한다.

자바스크립트로 데이터베이스를 다루려면 클라이언트 객체가 필요하다.

  • 클라이언트 객체 : SQL을 데이터베이스 서버에 전달해서 작업을 처리하고 결과를 받아오는 객체
    • 데이터베이스의 종류에 맞는 클라이언트 객체를 사용해야 한다.
      ex) MySQL의 데이터베이스를 다루는 클라이언트 객체 : MySQL2

방법1. 직접 작성한 SQL 문을 클라이언트 객체에 전달하여 DBMS로 전송

  • 단점 : SQL문을 잘 알지 못하면 다루기 어렵다.

방법2. ORM을 통해 자바스크립트로 작성한 데이터베이스 관련 코드를 SQL로 변환하여 DBMS에 전송

  • SQL문을 잘 몰라도 쉽게 데이터베이스 작업을 할 수 있다.

sequelize

Node.js 환경에서 사용할 수 있는 다양한 ORM 패키지 중 하나

npm install mysql2 sequelize sequelize-cli 
  • mysql2 : 클라이언트 패키지
  • sequelize-cli : 데이터베이스 작업을 sequelize와 연동해서 터미널에서 직접 명령어를 수행할 수 있게 해주는 패키지
npx sequelize init

sequelize 를 사용할 때 프로젝트 내부 디렉토리를 알맞은 구조로 자동으로 잡아줄 수 있다.


config : 데이터베이스 접속에 관한 각종 설정들이 들어있는 디렉토리이다

  • 개발할 때 사용할 development 객체, 테스트할 때 사용할 test 객체, 실제로 서비스를 배포해서 제공할 때 사용할 production 객체가 있다.


mySQL을 설치할 때 적었던 정보를 그대로 username, password 에 적어주면 된다.

  • dialect : 사용할 데이터베이스의 종류를 의미한다.
  • database : 접속할/생성할 데이터베이스의 이름을 적어주면 된다.
# 데이터베이스 생성방법
npx sequelize db:create --env development

--env development : 개발 모드의 데이터베이스 생성
"database" 에 적었던 이름의 database 가 생성된다.

profile
React, Next.js, TypeScript 로 개발 중인 프론트엔드 개발자

0개의 댓글