본문 바로가기

공부/타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)

백엔드 심화: 인증과 비동기처리(1)-데이터베이스란(DB)

데이터베이스란?

테이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체를 데이터베이스(Database; DB)라고 한다.

데이터를 구조화하여 관리함으로서 데이터 중복을 막고 효율적이고 빠른 데이터 연산을 가능하게 한다.

 

내가 생각하는 데이터베이스의 장점?

🔸데이터베이스가 없다면 프론트에서 객체나, 배열에 담아서 저장해야하는데,

데이터들이 추가적으로 저장이 될 때마다 웹이 무거워지고, 소스코드를 확인했을 때,

어떤 데이터들이 담겨있는지 모두 확인이 가능하여 캡슐화가 쉽지않다.

게다가 스토리지를(세션이 만료되긴 하지만)  사용하지 않는다면 새로고침으로 데이터가 날아갈 수도 있고

직접 접근하여 데이터의 수정이 가능하므로 무결성이 보장되지 않는다.

데이터베이스는 API를 가지고 와서 프론트에서 뿌려주지 않는 이상 바로 눈으로 보이는 데이터가 아니며

db에 직접 접근하지 않고선 어떤 데이터들이 있는지 확인과 수정이 어렵기 때문에 보안적으로 좋고,

웹 자체에서 저장해서 사용하는 데이터가 아니기 때문에 데이터가 늘어날수록 웹 성능에도 문제가 생긴다.

 

DBMS 순위

 

RDBMS를 쓰는 이유?

Relational DBMS: 데이터 간 '관계'

Primary Key: PK(기본키)

➡️해당 테이블의 각 행을 유니크하게 구별할 수 있는 유일 key값

 

Foreign Key: FK(외래키)

➡️A테이블에서 B테이블의 데이터를 찾아가고 싶을 때, 사용하는 key값

<최대한 B테이블의 PK값을 A테이블의 FK로 쓰는것이 이상적이다>

 

정규화 = 테이블을 나눈다. (장/단점 존재)

➡️하나에 많은 컬럼을 다 넣어서 데이터를 관리하기보다

사용에 따라 테이블을 나눠서 관계에 따라 테이블을 가져다 쓴다❗

장점: 중복값을 최소화 할 수 있다.

단점: 값을 찾는데 하나의 컬럼에 데이터가 다 들어있을때 보단 시간이 소요된다.

 

데이터베이스 '테이블 간 어떤 관계를 가지고 있는지' 연관관계는 1:1, 1:N, M:N

예시) 게시글 vs 사용자

  1. 사용자 1명 : 게시글 N개 ➡️ 1:N
  2. 게시글 1개 : 사용자 1명 ➡️ 1:1

게시글 - 사용자 테이블 분리

  1. 게시글 테이블을 보고 사용자 데이터를 확인 :  연관관계
    • 게시글 테이블을 보고 사용자와 어떤 관계인지 파악해보기
  2. 사용자 테이블을 보고 게시글 데이터를 확인할 수 없음