테이블이 아니라 관계가,
데이터베이스의 본질입니다
섹션 4 — DB 모델링, 이 강의의 진짜 메인이 시작됩니다. "DB 모델링만 알면 AI가 SQL을 다 만들어준다" — 이 한 문장이 진짜인지, 오늘부터 8강 동안 손에 잡히는 감각으로 만들어봅니다. 첫걸음은 코드가 아니라 사고법 전환입니다.
이번 섹션의 여정
지금 여기 — 사고법 전환
강의의 한 줄
관계 유형 · FK · ERD · 정규화
실무 ERD · 종합 실습 ⭐
AI 협업 SQL 작성법
여기서부터가 진짜 메인입니다
이 강의를 만들면서 “이 섹션 하나가 강의의 값어치를 결정한다” 고 생각한 부분이 바로 여기입니다. 강의 소개의 메인 메시지도 여기서 나옵니다.
“DB 모델링만 알면, AI가 SQL을 다 만들어준다.” — 오늘부터 8강 동안, 이 한 문장이 진짜인지 직접 확인합니다.
섹션 3의 가벼운 손놀림과는 결이 다릅니다. 코드는 짧게, 대신 생각은 깊게 — 천천히 따라오세요.
섹션 3까지와 무엇이 다른가
섹션 3까지 우리가 한 건 SQL 문법이었습니다. SELECT, WHERE, JOIN, GROUP BY — 도구함을 채운 거예요. 그런데 솔직히 — “AI가 이거 다 짜주는 시대잖아요?” 맞습니다. 그래서 진짜 실력은 다른 데서 갈립니다. AI가 SQL을 짜준다고 해도, “이 SQL이 의미가 맞는지” 는 사람이 판단해야 하고 — 그 판단의 근거가 데이터의 구조입니다.
AI가 짜준 SQL을 그대로 믿습니다
문법 지식만으로는 AI를 이길 수 없습니다. 짜준 SQL의 의미가 맞는지 판단할 근거가 없으니, 결과가 틀려도 모른 채 지나갑니다.
한 줄 요청으로 정확한 SQL을 받습니다
“AI야 이거 뽑아줘” 한 줄에 정확한 SQL이 나오고, 결과 의심·검증도 1초면 끝납니다. 판단의 근거 — 구조 — 를 갖고 있기 때문입니다.
SQL 잘 짜는 사람 ≠ SQL 문법 외운 사람.
SQL 잘 짜는 사람 = 데이터 구조 읽을 줄 아는 사람.
데이터베이스의 본질 — “관계”
그럼 “데이터의 구조” 라는 게 뭘까요? 한 단어로 — 관계입니다. 우리 강의 데이터 shop DB를 봅시다. 회원·카테고리·상품·주문·주문상세, 5개 테이블. 그런데 이 5개가 따로 떨어져 있는 게 아니에요. 선으로 다 연결돼 있습니다.
- 회원 ↔ 주문 — “한 회원이 여러 주문을 한다”
- 주문 ↔ 주문상세 — “한 주문에 여러 상품이 담긴다”
- 카테고리 ↔ 상품 — “한 카테고리에 여러 상품이 속한다”
이 선이 진짜입니다. 테이블은 그냥 데이터 묶음일 뿐 — 선, 즉 관계가 데이터베이스의 본질이에요.
테이블이 아니라, 테이블들 사이의 관계가 데이터베이스다.
말로만 들으면 추상적이니, 선 하나를 데이터로 직접 확인해봅시다. ERD에서 members와 orders를 잇는 선 — 김철수 님 한 명을 따라가 보면:
USE shop;
SELECT
m.member_name,
o.order_id,
o.ordered_at
FROM
members m
JOIN orders o
ON m.member_id = o.member_id
WHERE
m.member_name = '김철수';| member_name | order_id | ordered_at |
|---|---|---|
| 김철수 | 1 | 2025-02-01 |
| 김철수 | 6 | 2025-04-10 |
| 김철수 | 14 | 2025-08-01 |
| 김철수 | 20 | 2025-10-12 |
| 김철수 | 27 | 2025-12-10 |
| 김철수 | 34 | 2026-02-15 |
members 테이블에서 김철수는 딱 1행입니다. 그런데 orders에는 그를 가리키는 주문이 6건 — member_id라는 선으로 연결돼 있죠. 섹션 3에서 기계적으로 쓰던 JOIN의 ON 절이, 사실은 이 선을 따라가는 행위였던 겁니다.
왜 데이터를 쪼개놨을까
여기서 자주 받는 질문 — “왜 한 테이블에 다 넣지 않고, 여기저기 흩어놨어요?” 만약 한 덩어리 테이블이었다면 이런 모양이 됩니다.
| order_id | member_name | age | ordered_at | product_name |
|---|---|---|---|---|
| 1 | 김철수 | 35 | 2025-02-01 | 라운드 티셔츠 |
| 6 | 김철수 | 35 | 2025-04-10 | 무선 이어폰 |
| 14 | 김철수 | 35 | 2025-08-01 | SQL 입문서 |
| 20 | 김철수 | 35 | 2025-10-12 | 패딩 점퍼 |
| ⋮ | ||||
이름 하나 바뀌면 1,000번 수정
주문 1,000건인 회원의 이름이 바뀌면 1,000행을 전부 고쳐야 합니다. 하나라도 빼먹으면 — 같은 회원이 두 이름을 갖는 데이터 불일치 사고. 사고 나기 딱 좋죠.
회원 테이블 한 군데만 고치면 끝
회원 정보는 members에 딱 한 번만 적습니다. orders는
member_id라는 선으로 가리키기만 하고요. 이름이 바뀌어도
수정은 한 곳입니다.
테이블을 쪼개는 이유 = “같은 정보를 두 번 적지 않기 위해.”
이 직관에 정식 이름을 붙이면 정규화입니다. 4-6 정규화 직관에서 제대로 다룹니다 — 지금은 “두 번 적지 않는다” 하나만 기억하세요.
AI 시대에 모델링이 더 중요한 이유
자 — 그럼 “왜 모델링이 AI 시대에 더 중요한가” 로 마무리하겠습니다. AI에게 SQL을 시킬 때, 우리가 줘야 할 건 딱 두 가지입니다.
- 어떤 데이터가 있는지 — 테이블과 컬럼
- 그 데이터가 어떻게 연결됐는지 — 관계, 곧 모델링
이 두 가지를 정확히 전달하면 AI는 SQL을 거의 안 틀립니다. 못 전달하면 — AI는 “아무거나” 짜줍니다. 그게 사고의 시작이에요.
어디서 본 장면이죠? 2-4에서 init.sql을 던져주자 AI 과외 선생님이 정확해졌던 이유가 바로 이겁니다. init.sql 안에 두 가지 — 테이블·컬럼, 그리고 관계 — 가 전부 들어있었으니까요. 섹션 4를 마치면 여러분이 그 구조를 직접 읽고, 직접 설명할 수 있게 됩니다.
모델링을 읽을 줄 안다 = AI에게 정확한 컨텍스트를 줄 수 있다 = SQL 결과가 정확하다.
외운 SQL 문법이 아니라 — 구조를 보는 눈입니다.
섹션 4 로드맵 — 앞으로 8강
| 강의 | 핵심 |
|---|---|
| 4-1 (지금) | 관계의 구조 — 사고법 전환 |
| 4-2 부모 / 자식 테이블 ⭐ | 강의의 한 줄 — 이것만 잡으면 80% |
| 4-3 1:1 / 1:N / N:M | 관계의 세 가지 유형 |
| 4-4 외래키 (FK) 와 무결성 | 선을 DB가 지키게 하는 장치 |
| 4-5 ERD 읽는 법 | 설계도 독해법 |
| 4-6 정규화 직관 | ”두 번 적지 않기”의 정식 이름 |
| 4-7 실무 ERD 분석 | 쇼핑몰 / SNS / 예약 비교 |
| 4-8 모델링 종합 실습 ⭐ | 요구사항 → ERD 직접 그리기 |
부모-자식이라는 한 개념만 잡으면 — 솔직히 이 강의의 80%는 이미 잡힌 겁니다. 할 수 있겠죠?
오늘 바뀐 건 코드가 아니라 보는 눈입니다. 연습 문제로 사고법 전환을 점검하고, 가장 중요한 4-2로 넘어갑시다.