5-1 연습 문제 — AI에게 줘야 할 3가지,
스키마·샘플 데이터·결과 형태를 직접 채운다
이번 강의에서 배운 것 — 스키마 / 샘플 데이터 / 결과 형태 = 3종 세트. 이 챕터의 연습은 답을 AI에 직접 던지는 게 핵심입니다. 눈으로 외운 3가지는 금방 흐려지지만, 직접 프롬프트를 짜고 AI의 결과로 검증해본 3가지는 손에 남습니다.
이번 연습의 위치
완료 ✓
강의 완료 ✓
지금 여기
ERD를 프롬프트로
섹션 5 마무리 ⭐
2-4에서 만든 AI 과외 선생님 세션을 그대로 쓰세요. 막히면 정답이 아니라 힌트만 요청하고 — 다 푼 뒤에는 본인이 만든 프롬프트와 SQL을 던지며 “내 답이 맞는지 검증해줘” 라고 물어보세요. 이 챕터의 연습은 답을 AI에 직접 던지고, AI의 결과로 검증하는 것이 핵심입니다.
문제 1. 3가지 누락 찾기
다음 프롬프트에는 3가지 중 무엇이 빠져있나요? 어떤 문제가 일어날지 예측하세요.
프롬프트 A:
"shop DB 에서 회원별 매출 뽑아줘"프롬프트 B:
"members, orders, order_items, products 테이블이 있어. 매출 보여줘"프롬프트 C:
"[스키마]
- members: member_id PK, name, gender, age
- orders: order_id PK, member_id FK
- order_items: order_id FK, product_id FK, quantity
- products: product_id PK, name, price
회원별 총 매출을 매출 많은 순으로 뽑아줘."정답 보기
| 프롬프트 | 빠진 것 | 예상 문제 |
|---|---|---|
| A | 3가지 모두 빠짐 (스키마·샘플·결과) | AI 가 “shop DB” 가 뭔지 모름. 모든 것 추측. 결과 신뢰도 0 |
| B | 샘플 데이터 + 컬럼 정보 + 결과 형태 빠짐 (테이블명만 있음) | AI 가 컬럼 추측. 잘못된 컬럼명으로 SQL 짤 위험 |
| C | 샘플 데이터 빠짐 | gender 가 ‘M/F’ 인지 ‘남/여’ 인지 추측. price 단위(원/달러) 추측. 가능하면 “가격이 100이라는 게 100원? 100달러?” 같은 AI 의 되묻기 발생 |
3가지 다 채워야 첫 시도에서 정확한 SQL 이 나옵니다. 안 채우면 — AI 가 추측 → 검증 → 다시 시키기 사이클 반복.
문제 2. 모범 프롬프트 작성
다음 요구사항을 받았을 때 — 3가지 종합 프롬프트 를 본인 손으로 작성해보세요.
[요구사항]
"의류 카테고리 (category_id=1) 상품들 중 — 5만원 이상인 상품들의 — 총 판매 수량을 상품명과 함께 보여줘. 수량 많은 순으로."shop DB 의 스키마 사용. 샘플 데이터는 init.sql 의 실제 데이터 에서 적당히 골라 쓰면 됩니다.
모범 답안
[테이블 구조]
- products: product_id PK, product_name, price, category_id FK
- order_items: order_id FK, product_id FK, quantity
- (orders, categories 는 이 쿼리에 필요 없음 — 안 줘도 OK)
[부모-자식 관계]
- products 1:N order_items
[샘플 데이터]
products:
1, 라운드 티셔츠, 19000, 1
3, 후드 집업, 65000, 1
8, 패딩 점퍼, 129000, 1
order_items:
(1, 1, 1), (7, 1, 2), (15, 1, 1)
[요구사항]
의류 카테고리(category_id=1) 의 5만원 이상 상품들의 — 총 판매 수량(SUM(quantity)).
- 출력: 상품명, 총수량
- 정렬: 수량 많은 순
- 필요한 테이블: products + order_items 만핵심 관찰:
- 필요한 테이블만 줌 (불필요한 categories, members 등은 생략 — 토큰 절약)
- 부모-자식 1 쌍만 언급
- 샘플 데이터 4-5 행으로 충분
- 결과 형태 명시 (출력 컬럼 + 정렬)
이 프롬프트를 ChatGPT 에 던지면 다음과 비슷한 SQL 이 나옵니다:
SELECT
p.product_name,
SUM(oi.quantity) AS 총수량
FROM
products p
JOIN order_items oi
ON p.product_id = oi.product_id
WHERE
p.category_id = 1 AND p.price >= 50000
GROUP BY
p.product_id,
p.product_name
ORDER BY
총수량 DESC;이 SQL 을 shop DB 에서 실행하면:
| product_name | 총수량 |
|---|---|
| 패딩 점퍼 | 5 |
| 카디건 | 3 |
문제 3 (도전). 실제 AI 시연
문제 2 에서 만든 본인 프롬프트를 — 실제 ChatGPT 또는 Claude 에 던지고 SQL 결과를 받아오세요. 그 다음:
실제 ChatGPT 또는 Claude 에 던지고 — SQL 결과를 받아오세요.
결과가 의미있게 나오는지 확인.
AI 가 만든 SQL 의 어디가 좋은지 / 어디가 부족한지 — 본인이 평가.
예: “이 결과의 수량이 정확한지 — JOIN 뻥튀기는 없는지 검산해줘”
가이드
이 문제는 “정답” 이 없습니다. AI 마다 / 시점마다 결과가 살짝 다릅니다. 평가 기준:
최소 JOIN + 명시적 조건
- 필요한 테이블만 JOIN
WHERE 절에 두 조건 (
category_id=1 AND price>=50000)GROUP BY 가
product_id또는(product_id, product_name)로 명시ORDER BY 가 별칭
총수량으로 깔끔
과한 JOIN · 어설픈 GROUP BY
필요 없는 테이블까지 JOIN (예: members, orders, categories 까지 — 토큰 / 성능 낭비)
GROUP BY 에 product_name 만 (product_id 누락 — 동일 상품명 있으면 합쳐짐)
- 별칭 누락 (한글로 나오지 않음)
보완 프롬프트 예시:
방금 만든 SQL 의 JOIN 깊이는 — 진짜 필요한 수준인가?
order_items 까지만 JOIN 해도 되지 않나? 더 최소한의 JOIN 으로 다시 짜줘.이런 “보완 사이클” 이 — 실무 AI 협업의 진짜 모습. 한 번에 완벽한 답 받으려 하지 말고, 2-3 번 주고받기 가 정상입니다.
스키마·샘플 데이터·결과 형태 — 3종 세트를 손으로 직접 채워봤다면, 다음은 그중 첫 번째인 스키마를 ERD 통째로 전달하는 포맷을 배울 차례입니다.