01 / 15
SESSION 29 · Part 6 서버/DB
관계형
데이터베이스
표(Table)로 세상을 정리하고, SQL로 대화하는 구조적 저장소
02 / 15
🎯
이 세션에서
배우는 것
📊
테이블 구조
행·열 기반의 데이터 모델을 이해한다
💾
기본 SQL
SELECT/INSERT/UPDATE/DELETE 네 동작을 읽는다
🔑
PK · FK
테이블 간 관계를 키로 연결하는 원리를 설명한다
03 / 15
💭
왜 표로 저장할까?
데이터를 자유롭게 적어두면 중복, 모순, 누락이 쉽게 발생한다.
표(Table)는 같은 형식의 데이터를 한 곳에 모아, 빠른 검색과 정합성을 동시에 제공한다.
수십 년간 기업 데이터의 표준이 될 만한 이유다.
04 / 15
SQL — 네 가지 동작
대부분의 작업은 이 4개의 키워드 안에서 이루어진다.
SELECT * FROM users WHERE age > 20;
INSERT INTO users (name, age) VALUES ('김철수', 30);
UPDATE users SET age = 31 WHERE id = 1;
DELETE FROM users WHERE id = 1;
05 / 15
🔍
SQL SELECT —
더 깊게 이해하기
SELECT 문은 단순히 "찾아줘"가 아니다. 내부적으로 여러 단계를 거쳐 결과를 돌려준다.
1
파싱 (Parsing)
작성된 SQL 문법이 올바른지 검사하고, 실행 가능한 형태로 분석한다.
2
최적화 (Optimization)
쿼리 옵티마이저가 가장 빠른 실행 계획을 선택한다. 인덱스 사용 여부도 여기서 결정된다.
3
실행 (Execution)
선택된 계획대로 디스크 또는 메모리에서 데이터를 읽는다.
4
결과 반환 (Result)
조건에 맞는 행들을 클라이언트에게 돌려준다.
06 / 15
테이블과 관계
각 행은 기본 키(PK)로 식별되고, 외래 키(FK)로 다른 테이블을 참조한다.
users orders
┌────┬──────────┐ ┌────┬─────────┬──────────┐
│ id │ name │ │ id │ user_id │ amount │
├────┼──────────┤ ├────┼─────────┼──────────┤
│ 1 │ 김철수 │ ◄── │ 10 │ 1 │ 50000 │
│ 2 │ 이영희 │ │ 11 │ 2 │ 30000 │
└────┴──────────┘ └────┴─────────┴──────────┘
PK PK FK
JOIN으로 두 표를 연결해 "누가 얼마를 주문했는지" 한 번에 조회한다.
07 / 15
🔗
JOIN —
실제로는 어떻게?
쿠팡에서 주문 내역을 볼 때, 실제로는 세 개의 테이블이 JOIN으로 합쳐진다.
👤 회원 테이블
user_id, name
→
🛒 주문 테이블
order_id, user_id
→
📦 상품 테이블
product_id, name
→
📋 주문 내역
한 화면에 통합
핵심: JOIN은 FK로 연결된 여러 테이블을 하나의 결과로 합친다.
08 / 15
🔗
JOIN — 표와 표를 잇다
SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id;
대표적인 관계형 DB 제품들:
09 / 15
📱
실생활에서
이렇게 쓰여요
우리가 매일 사용하는 앱과 서비스 속에 관계형 DB가 녹아 있다.
🛒
쿠팡 주문 내역
회원·주문·상품 테이블이 JOIN되어 "누가 무엇을 얼마에" 샀는지 한 화면에 표시된다.
🏦
은행 거래 내역
계좌·거래·고객 테이블이 연결되어 입출금 이력과 잔액을 정확하게 추적한다.
🏥
병원 환자 기록
환자·진료·처방 테이블 JOIN으로 진료 기록과 약 처방 이력을 관리한다.
💡 이 개념이 없다면 데이터 중복과 불일치로 주문 정보를 신뢰할 수 없게 된다.
10 / 15
💡
자주 하는
오해 바로잡기
이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.
❌ 흔한 오해
- 엑셀이 곧 데이터베이스다
- SQL은 프로그래밍 언어다
- 테이블은 엑셀 시트와 같다
✓ 실제로는
- 엑셀은 동시 접근·트랜잭션이 없어 DB가 아니다
- SQL은 데이터를 질의(Query)하는 언어, 로직을 구성하는 프로그래밍 언어가 아니다
- 테이블은 관계와 제약(FK, PK)이 있어 엑셀 시트보다 훨씬 엄격하다
11 / 15
📑
관계형 DB는 엑셀 시트 묶음이다
여러 시트가 서로를 참조하며 중복 없이 데이터를 구성하는 엑셀 문서와 닮았다.
📑 엑셀 비유
시트(Sheet)
=
테이블 — users, orders, products
행(Row)
=
레코드 — 한 사람, 한 주문
열(Column)
=
필드 — id, name, age
시트 간 참조
=
FK · JOIN — 고객ID로 주문 시트 연결
12 / 15
🤖
이걸 알면
AI와 이렇게 대화해요
관계형 DB를 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.
🤖
어떤 쿼리를 사용하고 계신가요? 느린 이유는 다양할 수 있습니다.
👤
users 테이블에서 WHERE email로 조회하는데 수백만 건이라 느려요. 인덱스가 없는 것 같아요. SQL 쿼리 최적화 방법과 email 컬럼에 인덱스 추가하는 방법 알려줘.
🤖
완벽한 질문입니다! CREATE INDEX idx_users_email ON users(email); 로 인덱스를 추가하면 풀스캔 대신 인덱스 스캔을 하여 수십~수백 배 빠릅니다. EXPLAIN으로 실행 계획도 확인해 보세요.
13 / 15
✅
이렇게
이해하셨나요?
✅
맞게 이해하셨어요
SQL은 데이터를 조회하고 수정하는 질의 언어다
❌
이렇게는 아니에요
엑셀로 모든 것을 대체할 수 있다
✅
맞게 이해하셨어요
JOIN은 FK로 연결된 여러 테이블을 합쳐 조회한다
❌
이렇게는 아니에요
모든 데이터베이스가 SQL을 사용한다
💪 표와 키로 세상을 정리하는 눈이 생겼습니다. 계속 나아가세요!
14 / 15
📌
핵심 정리
🧷
외래 키 (FK)
다른 테이블을
참조하는 열
🐘
PostgreSQL
오픈소스 관계형 DB의
대표 주자
15 / 15
🚀
다음 세션
Session 30 · Firebase와 BaaS
표로 담기 힘든 데이터, 유연한 구조가 필요한 데이터를 다루는 세계.
MongoDB · Firebase로 대표되는 스키마리스 저장소를 배운다.
💡 기억할 것: 관계형 DB의 힘은 "중복 없이 관계로 연결한다"에서 나온다.