Guider/Database/DatabaseDevGuide0001
Database#01

DatabaseDevGuide0001

데이터베이스 개념 완전 정복

🗄️
DATABASE DEVELOPER GUIDE SERIES

DatabaseDevGuide0001

데이터베이스 개념 완전 정복 A-Z

비전공자도 현업에서 바로 쓸 수 있는 데이터베이스 완전 가이드

⏱ 예상 학습: 15~20시간📊 난이도: 입문~초급🎯 목표: 개념 완전 이해

📋 학습 목차

01. 데이터베이스가 왜 필요한가?
02. 엑셀 vs 데이터베이스
03. 핵심 용어 완전 정복
04. DBMS란 무엇인가?
05. 관계형 DB vs 비관계형 DB
06. 주요 DBMS 완전 비교
07. 데이터 타입 완전 정리
08. 데이터 무결성과 제약 조건
09. 트랜잭션과 ACID
10. 현업 면접 Q&A
11. 학습 로드맵
01

데이터베이스가 왜 필요한가?

💡 핵심 한 줄 요약

데이터베이스는 수많은 데이터를 체계적으로 저장하고, 빠르게 찾아쓰고, 안전하게 보호하기 위한 시스템입니다.

😓 데이터베이스 없이

  • 메모장/엑셀로 관리 → 느리고 오류 많음
  • 동시 수정 시 데이터 충돌 발생
  • 파일 손상되면 데이터 영구 손실
  • 여러 사람이 동시에 접근 불가

😊 데이터베이스 사용 시

  • 수백만 건 데이터도 0.001초에 검색
  • 수천 명 동시 접속도 충돌 없이 처리
  • 자동 백업으로 데이터 안전 보장
  • 데이터 무결성 자동 유지
02

엑셀 vs 데이터베이스

비교 항목 📊 엑셀 🗄️ 데이터베이스
최대 데이터 양 약 100만 행 수십억 행도 가능
동시 사용자 1~2명 (충돌 위험) 수만 명 동시 접근 가능
검색 속도 데이터 많으면 느림 인덱스로 밀리초 내 검색
데이터 보안 파일 비밀번호 수준 세밀한 권한 관리 가능
백업/복구 수동 복사 필요 자동 백업 및 롤백 지원
03

핵심 용어 완전 정복

🏛️ 도서관 비유로 이해하는 데이터베이스 구조

데이터베이스 = 도서관 전체 건물 → 모든 데이터가 저장되는 공간

테이블(Table) = 도서관의 책 분류 섹션 → 분류된 데이터 집합

행(Row / Record) = 책 한 권 → 하나의 완전한 데이터 단위

열(Column / Field) = 책의 속성 → 데이터의 특성을 나타내는 카테고리

기본키(PK) = 도서 고유 번호(ISBN) → 각 행을 유일하게 식별하는 값

외래키(FK) = 대출 카드의 도서 번호 → 다른 테이블의 기본키를 참조

user_id (PK) username email grade
1 홍길동 hong@email.com VIP
2 김영희 kim@email.com 일반
3 이철수 lee@email.com 골드
04

DBMS란 무엇인가?

💡 DBMS = Database Management System

DBMS는 데이터베이스를 생성하고, 관리하고, 사용자가 접근할 수 있게 해주는 소프트웨어입니다.

1️⃣ 데이터 저장 및 관리

데이터를 체계적으로 구조화하여 저장. 중복 없이 효율적으로 공간 활용

2️⃣ 동시성 제어

수천 명이 동시에 같은 데이터에 접근해도 충돌 없이 안전하게 처리

3️⃣ 보안 및 접근 제어

사용자별 권한 설정. A는 읽기만, B는 수정도 가능하게 세밀한 제어

4️⃣ 백업 및 복구 + 5️⃣ 무결성 보장

장애 발생 시 자동으로 이전 상태로 복구. 잘못된 데이터 자동 검증

05

관계형 DB vs 비관계형 DB (NoSQL)

📐

관계형 DB (RDBMS)

  • 데이터를 표(테이블) 형태로 저장
  • SQL이라는 언어로 데이터 조작
  • ACID 트랜잭션 완벽 지원
  • 스키마가 엄격하게 고정됨

대표: MySQL, PostgreSQL, Oracle

🔄

비관계형 DB (NoSQL)

  • 문서(JSON), 키-값, 그래프 방식 등
  • 스키마가 유연함 (구조 변경 쉬움)
  • 수평적 확장(Scale-Out)이 쉬움
  • 대용량 데이터 처리에 강함

대표: MongoDB, Redis, Cassandra

🗄️ SQL DB를 쓰세요

  • 데이터 구조가 명확하고 잘 변하지 않을 때
  • 금융, 결제 등 높은 데이터 일관성 필요 시
  • 예) 쇼핑몰, 은행, ERP, 회원 관리

🔄 NoSQL을 쓰세요

  • 데이터 구조가 자주 바뀌거나 유동적일 때
  • 초대용량 데이터를 빠르게 처리해야 할 때
  • 예) SNS 피드, 게임 서버, IoT, 로그 수집
06

주요 DBMS 완전 비교

DBMS 특징 장점 추천 대상
🐬 MySQL 오픈소스, 가장 널리 쓰임 무료, 자료 많음, 배우기 쉬움 ⭐ 입문자
🐘 PostgreSQL 오픈소스, 고급 기능 많음 JSON, 전문 검색, 확장성 탁월 ✅ 중급자
🏢 Oracle 상용, 엔터프라이즈 최강자 안정성, 성능, 지원 최고 💰 비용 높음
💾 SQLite 서버 없이 파일 하나로 동작 초경량, 설치 불필요 🧪 학습/테스트
🍃 MongoDB 문서형 NoSQL, JSON 저장 유연한 스키마, 빠른 개발 🔄 NoSQL 입문
⚡ Redis 키-값, 인메모리 DB 초고속 캐싱, 세션 관리 ⚡ 성능 최적화
07

데이터 타입(Data Type) 완전 정리

각 컬럼은 저장할 수 있는 데이터의 종류(타입)를 미리 정해야 합니다. 잘못된 타입을 쓰면 저장 공간 낭비와 성능 저하가 발생합니다!

타입 크기 설명 사용 예시
🔢 숫자형
INT 4 bytes 정수 (-21억 ~ 21억) ID, 수량, 조회수
BIGINT 8 bytes 큰 정수 (약 920경) 대용량 ID, 타임스탬프(밀리초)
DECIMAL(p,s) 가변 정확한 소수값 (근사값 아님!) 💰 금액, 이자율 (반드시 사용!)
📝 문자형
CHAR(n) 최대 255자 고정 길이. 짧아도 n자리 차지 국가 코드(KR,US), 성별(M,F)
VARCHAR(n) 최대 65,535자 가변 길이. 실제 길이만큼만 차지 이름, 이메일, 제목 (가장 많이 씀)
TEXT 최대 65,535자 긴 텍스트 블로그 내용, 상품 설명
📅 날짜/시간형
DATE YYYY-MM-DD 날짜만 저장 생일, 입사일, 만료일
DATETIME YYYY-MM-DD HH:MM:SS 날짜+시간 저장 게시글 작성일, 주문 시각
TIMESTAMP YYYY-MM-DD HH:MM:SS 자동 기록 (INSERT/UPDATE 시) created_at, updated_at

⚠️ 현업에서 자주 하는 실수!

  • 금액을 FLOAT으로 저장하면 절대 안됩니다! 반드시 DECIMAL 사용!
  • 이름 컬럼을 CHAR(50)으로 하면 5자 이름도 50바이트를 차지합니다. VARCHAR 사용!
  • 날짜를 VARCHAR("2024-01-15")로 저장하면 날짜 계산이 불가능합니다. DATE 타입 사용!
08

데이터 무결성과 제약 조건 (Constraint)

💡 데이터 무결성 = 데이터의 정확성과 일관성 유지

잘못된 데이터가 들어오지 못하게 DBMS가 자동으로 막아줍니다. 예) 나이에 음수값 불가, 중복 이메일 불가, 존재하지 않는 사용자의 주문 불가

제약 조건 설명 SQL 예시 위반 시
PRIMARY KEY 각 행을 유일하게 식별. 중복 불가, NULL 불가 id INT PRIMARY KEY 오류 발생, 저장 거부
FOREIGN KEY 다른 테이블의 PK를 참조. 참조 무결성 보장 REFERENCES users(id) 존재하지 않는 값 참조 시 거부
NOT NULL NULL 저장 불가. 반드시 값 있어야 함 name VARCHAR(50) NOT NULL NULL 입력 시 오류
UNIQUE 중복 값 불가 email VARCHAR(100) UNIQUE 중복 값 입력 시 오류
CHECK 특정 조건을 만족하는 값만 저장 가능 CHECK (age >= 0) 조건 불만족 시 오류
DEFAULT 값 입력 안 하면 기본값 자동 설정 status DEFAULT 'active' 기본값 자동 적용
09

트랜잭션(Transaction)과 ACID 원칙

💡 트랜잭션 = 모두 성공하거나 모두 실패해야 하는 작업의 묶음

은행 송금을 생각해보세요. A계좌 -10만원, B계좌 +10만원 이 두 작업이 반드시 같이 성공하거나 같이 취소되어야 합니다!

-- 트랜잭션 시작
BEGIN TRANSACTION;

-- 1단계: 홍길동 계좌에서 10만원 차감
UPDATE accounts SET balance = balance - 100000 WHERE user_id = 1;

-- 2단계: 김영희 계좌에 10만원 추가
UPDATE accounts SET balance = balance + 100000 WHERE user_id = 2;

COMMIT; -- 성공 시 확정
-- ROLLBACK; -- 실패 시 전부 취소!
⚛️

A - Atomicity (원자성)

모든 작업이 완전히 실행되거나, 전혀 실행되지 않아야 합니다. (all or nothing)

🎯

C - Consistency (일관성)

트랜잭션 완료 후 데이터베이스가 항상 유효한 상태를 유지해야 합니다.

🔒

I - Isolation (격리성)

동시에 실행되는 트랜잭션들이 서로 영향을 주지 않아야 합니다.

💾

D - Durability (지속성)

COMMIT된 트랜잭션의 결과는 장애가 발생해도 영구적으로 유지되어야 합니다.

10

현업 면접 단골 Q&A

Q1. 기본키(PK)와 외래키(FK)의 차이를 설명해주세요.

A: 기본키는 테이블에서 각 행을 유일하게 식별하는 컬럼으로, 중복값과 NULL이 허용되지 않습니다. 외래키는 다른 테이블의 기본키를 참조하는 컬럼으로, 테이블 간의 관계를 정의하고 참조 무결성을 보장합니다.

Q2. 관계형 DB와 NoSQL의 차이와 각각 언제 사용하나요?

A: 관계형 DB는 테이블 구조로 데이터를 저장하며 ACID를 완벽히 지원하여 금융, 쇼핑몰 시스템에 적합합니다. NoSQL은 다양한 형태로 저장하며 유연한 스키마를 가집니다. 대용량 처리, 실시간 데이터에 적합합니다. 실무에서는 두 가지를 함께 사용하는 경우가 많습니다.

Q3. 인덱스(Index)란 무엇이고 단점은?

A: 인덱스는 데이터 검색 속도를 높이기 위한 자료구조로, 책의 찾아보기 색인과 같습니다. 단점은 인덱스 자체가 저장 공간을 차지하고, INSERT/UPDATE/DELETE 시 인덱스도 갱신해야 하므로 쓰기 성능이 저하됩니다. 무분별한 인덱스 생성은 오히려 성능을 해칩니다.

Q4. ACID란 무엇인지 설명해주세요.

A: ACID는 데이터베이스 트랜잭션의 4가지 핵심 특성입니다. 원자성(Atomicity)은 전부 실행 또는 전부 취소, 일관성(Consistency)은 항상 유효한 상태 유지, 격리성(Isolation)은 동시 트랜잭션 간 간섭 방지, 지속성(Durability)은 커밋된 데이터 영구 보존입니다.

Q5. NULL 처리 시 주의사항은?

A: NULL은 "값이 없음"을 나타내는 특수한 상태로, 0이나 빈 문자열("")과 다릅니다. NULL 체크는 반드시 IS NULL / IS NOT NULL을 사용해야 합니다. COALESCE() 함수로 NULL을 기본값으로 처리하는 것이 중요합니다.

Q6. 정규화(Normalization)란 무엇인가요?

A: 정규화는 데이터 중복을 최소화하고 이상 현상을 방지하기 위해 테이블을 체계적으로 분리하는 과정입니다. 1NF(원자값), 2NF(부분 함수 종속 제거), 3NF(이행적 함수 종속 제거) 단계가 있습니다. 실무에서는 성능과 정규화 수준의 균형이 중요합니다.

11

데이터베이스 개발자 학습 로드맵

단계 학습 내용 기간 상태
1단계 DB 개념 이해 - 테이블, 키, ACID (Guide0001) 1~2주 ✅ 현재
2단계 SQL 기초 - SELECT, WHERE, INSERT, UPDATE, DELETE (Guide0002) 3~4주 ⏳ 예정
3단계 SQL 심화 - JOIN, GROUP BY, 서브쿼리, 인덱스 (Guide0003) 2~3주 ⏳ 예정
4단계 DB 설계 - 정규화, ERD, 쇼핑몰 DB 설계 (Guide0004) 2~3주 ⏳ 예정
5단계 NoSQL 입문 - MongoDB, Redis (Guide0005) 2주 ⏳ 예정
6단계 실전 활용 - 백엔드 연동(ORM), 트랜잭션, 보안 (Guide0006) 2주 ⏳ 예정
7단계 실전 프로젝트 - 블로그/쇼핑몰 DB 전체 설계 및 구현 (Guide0007) 3~4주 ⏳ 예정

🔧 필수 설치 도구

  • MySQL - 관계형 DB 실습 (무료)
  • DBeaver - DB GUI 관리 도구 (무료)
  • MongoDB Atlas - NoSQL 클라우드 (무료)
  • dbdiagram.io - ERD 설계 사이트 (무료)

📚 추천 학습 자료

  • SQLZoo - SQL 인터랙티브 학습
  • W3Schools SQL - 레퍼런스 + 실습
  • HackerRank SQL - 문제 풀이 실력 향상
  • MongoDB University - 공식 무료 강의
🎉

수고하셨습니다!

데이터베이스 개념부터 ACID, 데이터 타입, 제약 조건까지 완주했습니다!
이 내용을 완전히 이해했다면 데이터베이스 개발자로서의 첫 발을 내딛은 것입니다!

다음 단계 :

DatabaseDevGuide0002

SQL 기초 완전 정복 - SELECT, WHERE, INSERT, UPDATE, DELETE

반응형