데이터베이스 기초 — 데이터를 체계적으로 관리하는 법
데이터베이스란
데이터를 구조화하여 저장·관리·검색할 수 있는 시스템입니다.
DBMS (Database Management System):
→ 데이터베이스를 관리하는 소프트웨어
→ Oracle, MySQL, PostgreSQL, MS SQL Server, SQLite
왜 파일이 아닌 DB를 쓰는가:
→ 동시 접근 처리 (여러 사용자 동시 사용)
→ 데이터 무결성 보장
→ 빠른 검색 (인덱스)
→ 트랜잭션으로 원자성 보장
관계형 데이터베이스 (RDBMS)
핵심 개념:
테이블: 행(레코드) + 열(필드/속성)
기본 키(PK): 각 행을 유일하게 식별
외래 키(FK): 다른 테이블의 PK 참조 → 관계 표현
예: 주문 테이블
주문ID(PK) | 고객ID(FK) | 상품ID(FK) | 주문일 | 금액
001 | C001 | P005 | 2026-01-01 | 50,000
SQL 기초
-- 데이터 조회 (SELECT)
SELECT 이름, 나이 FROM 고객
WHERE 나이 >= 30
ORDER BY 나이 DESC
LIMIT 10;
-- 데이터 삽입 (INSERT)
INSERT INTO 고객 (이름, 나이, 이메일)
VALUES ('홍길동', 30, 'hong@example.com');
-- 데이터 수정 (UPDATE)
UPDATE 고객
SET 나이 = 31
WHERE 고객ID = 'C001';
-- 데이터 삭제 (DELETE)
DELETE FROM 고객
WHERE 고객ID = 'C001';
-- 테이블 조인 (JOIN)
SELECT 주문.주문ID, 고객.이름, 주문.금액
FROM 주문
INNER JOIN 고객 ON 주문.고객ID = 고객.고객ID
WHERE 주문.금액 > 100000;
정규화 (Normalization)
중복을 줄이고 데이터 무결성을 높이는 설계 원칙:
제1정규형 (1NF): 각 컬럼은 원자값만 (배열 금지)
제2정규형 (2NF): 부분 함수 종속 제거
제3정규형 (3NF): 이행 함수 종속 제거
예: 비정규화된 주문 테이블
주문ID | 고객명 | 고객주소 | 상품명 | 상품가격
→ 고객 정보와 상품 정보를 각자 테이블로 분리
정규화의 장점: 중복 제거, 일관성
역정규화의 장점: 조인 줄여 읽기 성능 향상 (트레이드오프)
인덱스 (Index)
목적: 특정 컬럼 빠른 탐색 (도서관 색인과 같음)
B-Tree 인덱스 (가장 일반적):
→ 균형 잡힌 트리 구조
→ 탐색·삽입·삭제: O(log n)
인덱스 사용 시점:
→ WHERE 절에 자주 쓰이는 컬럼
→ JOIN에 사용되는 외래키
→ ORDER BY에 사용되는 컬럼
인덱스 주의:
→ 쓰기(INSERT/UPDATE/DELETE) 성능 저하
→ 디스크 공간 추가 사용
→ 모든 컬럼에 인덱스 = 역효과
트랜잭션 (Transaction) — ACID
원자성 (Atomicity):
→ 모두 성공 or 모두 실패 (부분 성공 없음)
→ 은행 이체: 출금 성공 + 입금 성공 or 둘 다 취소
일관성 (Consistency):
→ 트랜잭션 전후 데이터 무결성 유지
→ 총 잔액은 변화 없음
격리성 (Isolation):
→ 동시 실행 트랜잭션들이 서로 영향 최소화
지속성 (Durability):
→ 커밋된 데이터는 장애 후에도 유지
SQL 트랜잭션:
BEGIN;
UPDATE 계좌 SET 잔액 = 잔액 - 100000 WHERE 계좌ID = 'A';
UPDATE 계좌 SET 잔액 = 잔액 + 100000 WHERE 계좌ID = 'B';
COMMIT; -- 또는 ROLLBACK (오류 시)
NoSQL vs 관계형 DB
관계형 DB: 정형 데이터, 스키마 고정, 복잡한 관계, ACID
NoSQL: 비정형/반정형, 유연한 스키마, 수평 확장
NoSQL 유형:
문서 DB: MongoDB — JSON 문서 저장 (유연한 스키마)
키-값 DB: Redis — 캐시, 세션 저장 (초고속)
컬럼 DB: Cassandra — 대규모 시계열 데이터
그래프 DB: Neo4j — 소셜 네트워크, 추천 시스템
선택 기준:
→ 데이터 구조가 명확하고 관계 복잡: RDBMS
→ 빠른 확장, 유연한 스키마: NoSQL
→ 실무: 하이브리드 사용 일반적
핵심 암기 포인트
SQL CRUD: SELECT(조회)·INSERT(삽입)·UPDATE(수정)·DELETE(삭제) ACID: 원자성·일관성·격리성·지속성 — 트랜잭션의 4가지 보장 인덱스: 읽기 O(log n), 쓰기 성능 저하 트레이드오프 NoSQL: 유연한 스키마, 수평 확장, 비정형 데이터에 적합
O
OIYO 편집부
Content Editor지식 인큐베이터이자 전문 콘텐츠 크리에이터. 경영, 경제, 법률 및 실생활에 유용한 실무/자격증 중심의 깊이 있는 정보를 연구하고 공유합니다.