데이터베이스 기초 개념 정리

기성·2025년 7월 17일

TIL

목록 보기
86/95

📌 데이터베이스란?

데이터베이스(Database)는 데이터를 구조화된 형태로 저장하고, 효율적으로 관리할 수 있게 도와주는 시스템.

쉽게 말하면, "정보를 담는 잘 정리된 엑셀 파일"이라고 생각하면 된다.


🧱 관계형 데이터베이스(Relational Database, RDB)

  • 데이터를 테이블 형태로 저장
  • 각 행은 레코드(Row), 각 열은 컬럼(Column)
  • SQL을 통해 데이터 조작 (CRUD)

대표적인 RDBMS

  • MySQL
  • PostgreSQL
  • SQLite
  • Oracle

💬 SQL이란?

SQL(Structured Query Language)은 데이터베이스에 명령을 내리는 언어이다.

자주 사용하는 SQL 명령어

구문설명
SELECT데이터 조회
INSERT데이터 추가
UPDATE데이터 수정
DELETE데이터 삭제
WHERE조건 지정
JOIN테이블 간 연결

예시:

SELECT * FROM users WHERE age > 20;

🔗 Primary Key & Foreign Key

✅ Primary Key (기본 키)

테이블에서 각 행을 유일하게 식별하는 컬럼

중복 X, NULL X

🔁 Foreign Key (외래 키)

다른 테이블의 기본 키를 참조하는 컬럼

테이블 간 관계(1:1, 1:N 등)를 표현

🔄 정규화 (Normalization)

  • 데이터 중복을 줄이고, 데이터 무결성을 높이기 위한 테이블 분리 작업

  • 여러 단계 (1NF, 2NF, 3NF 등) 존재

📚 NoSQL이란?

NoSQL(Not Only SQL)은 관계형 DB가 아닌 데이터베이스입니다.

특징

  • 테이블 대신 문서(Document), 키-값(Key-Value) 등 다양한 구조 사용

  • 유연한 스키마, 높은 확장성

대표적인 NoSQL DB

  • MongoDB (문서 기반)

  • Redis (키-값 저장소)

  • Firebase (JSON 기반)

✅ 트랜잭션(Transaction)이란?

  • 데이터베이스에서의 하나의 작업 단위
  • 여러 쿼리가 하나의 묶음으로 처리되어야 할 때 사용

🔐 ACID 속성

트랜잭션이 지켜야 할 4가지 성질

속성설명
A - Atomicity (원자성)모두 성공하거나 모두 실패해야 함
C - Consistency (일관성)트랜잭션 전후의 데이터는 일관되어야 함
I - Isolation (격리성)동시에 실행되는 트랜잭션이 서로 간섭하지 않음
D - Durability (지속성)트랜잭션이 완료되면 그 결과는 영구적으로 저장

예: 은행 이체 시, 출금과 입금은 동시에 성공하거나 동시에 실패해야 함 (원자성)
A에서 B로 이체할 시 A에선 출금이 되고 B에서는 입금이 동시에 성공해야한다는 뜻. 만약 한 곳에서라도 실패한다면 트랜잭션을 롤백한다.


🧵 인덱스(Index)

  • 테이블의 특정 컬럼에 대한 검색 속도를 높이기 위한 자료구조
  • 마치 책의 목차처럼 빠른 탐색 가능

주의사항

  • 검색 속도는 빨라지지만,
  • 삽입/수정/삭제 시에는 오히려 성능이 저하될 수 있음
-- 인덱스 생성 예시
CREATE INDEX idx_name ON users(name);

🔀 JOIN의 종류

✅ INNER JOIN

두 테이블에서 일치하는 값이 있는 행만 반환

✅ LEFT JOIN / RIGHT JOIN

기준 테이블의 모든 행 + 조건에 맞는 행만 합쳐서 반환

✅ FULL OUTER JOIN (PostgreSQL 등 지원)

모든 행 반환, 조건이 없는 경우 NULL로 채움

-- INNER JOIN 예시
SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id;

🧠 VIEW란?

  • 복잡한 쿼리를 단순한 테이블처럼 사용할 수 있도록 만든 가상의 테이블

  • 실제 데이터를 저장하지 않고, 정의된 쿼리 결과를 보여줌

CREATE VIEW active_users AS
SELECT * FROM users WHERE is_active = true;

⚖️ 정규화 vs 비정규화

구분정규화비정규화
장점중복 최소화, 일관성 유지조회 성능 향상
단점JOIN이 많아져 성능 저하 가능데이터 중복 증가
사용 예시대부분의 OLTP 시스템조회 위주의 서비스 (OLAP 등)

💽 RDB vs NoSQL 비교 요약

항목RDBNoSQL
구조정해진 스키마, 테이블유연한 스키마, 문서/키-값 등
확장수직 확장 (Scale-Up)수평 확장 (Scale-Out)
트랜잭션강력한 지원일부 지원
사용처복잡한 관계, 정합성 중요빠른 읽기/쓰기, 유연한 구조
profile
프론트가 하고싶어요

0개의 댓글