데이터베이스 작업을 위한 효과적인 프롬프트 패턴을 알아봅니다.
데이터베이스 프롬프트 구조
스키마 설계
SQL 스키마
PostgreSQL로 전자상거래 데이터베이스 스키마를 설계해줘.
테이블:
- users (사용자)
- products (상품)
- orders (주문)
- order_items (주문 상세)
- categories (카테고리)
요구사항:
- 적절한 데이터 타입
- Primary Key, Foreign Key
- 인덱스 권장사항
- created_at, updated_at 포함
- 제약조건 (CHECK, UNIQUE 등)
NoSQL 스키마
MongoDB로 블로그 시스템 스키마를 설계해줘.
컬렉션:
- users
- posts
- comments
고려사항:
- 임베딩 vs 참조 결정
- 자주 조회되는 패턴 최적화
- 인덱스 설계
- 스키마 검증 규칙
SQL 쿼리
기본 쿼리
다음 요구사항에 맞는 SQL 쿼리를 작성해줘.
테이블: orders, order_items, products
요구사항:
1. 최근 30일 주문 중
2. 총 주문 금액이 10만원 이상인
3. 고객별 주문 횟수와 총 금액
4. 금액 기준 내림차순 정렬
결과 컬럼: user_id, order_count, total_amount
복잡한 쿼리
다음 분석 쿼리를 PostgreSQL로 작성해줘.
목적: 월별 제품 카테고리 매출 분석
요구사항:
- 최근 12개월 데이터
- 카테고리별 월간 매출
- 전월 대비 성장률
- 이동평균 (3개월)
결과: 월, 카테고리, 매출, 성장률, 이동평균
윈도우 함수
윈도우 함수를 사용한 쿼리를 작성해줘.
요구사항:
- 각 부서별 급여 순위
- 전체에서의 백분위
- 부서 평균과의 차이
사용할 함수:
- ROW_NUMBER()
- PERCENT_RANK()
- AVG() OVER
성능 최적화
쿼리 최적화
다음 쿼리를 최적화해줘.
현재 쿼리:
SELECT * FROM orders
WHERE DATE(created_at) = '2024-01-15'
AND status = 'completed';
문제: 느린 실행 속도
요청:
- 문제점 분석
- 최적화된 쿼리
- 필요한 인덱스 제안
- EXPLAIN 분석 방법
인덱스 설계
다음 테이블에 적절한 인덱스를 설계해줘.
테이블: products
자주 사용되는 쿼리:
1. SELECT * WHERE category_id = ? AND status = 'active'
2. SELECT * WHERE name LIKE '%keyword%'
3. SELECT * ORDER BY created_at DESC LIMIT 10
4. SELECT * WHERE price BETWEEN ? AND ?
요청:
- 각 쿼리에 적합한 인덱스
- 복합 인덱스 고려
- 인덱스 생성 SQL
ORM 코드
Prisma 스키마
Prisma 스키마를 작성해줘.
모델:
- User (사용자)
- Post (게시물)
- Comment (댓글)
- Tag (태그) - 다대다 관계
요구사항:
- 관계 정의 포함
- 인덱스 정의
- 기본값 설정
- enum 타입 사용
TypeORM 엔티티
TypeORM 엔티티를 작성해줘.
엔티티: Order
필드:
- id (UUID)
- userId (관계)
- items (OneToMany)
- totalAmount
- status (enum)
- createdAt, updatedAt
포함:
- 데코레이터
- 관계 설정
- 인덱스
- 기본값
마이그레이션
스키마 변경
안전한 마이그레이션 SQL을 작성해줘.
변경사항:
1. users 테이블에 phone 컬럼 추가 (nullable)
2. products.status 컬럼을 enum으로 변경
3. 기존 orders 테이블에 인덱스 추가
요구사항:
- 롤백 SQL도 포함
- 다운타임 최소화
- 대용량 테이블 고려
NoSQL 쿼리
MongoDB 집계
MongoDB 집계 파이프라인을 작성해줘.
목적: 일별 판매 통계
데이터:
orders: { userId, products[], total, createdAt }
요구사항:
- 최근 30일 데이터
- 일별 주문 수, 총 매출
- 상위 판매 상품
- 시간대별 주문 분포
MongoDB 인덱스
MongoDB 인덱스 전략을 제안해줘.
컬렉션: products
쿼리 패턴:
1. 카테고리 + 가격 범위 검색
2. 텍스트 검색 (이름, 설명)
3. 지역 기반 검색 (위치)
4. 최신순 정렬
요청:
- 복합 인덱스 설계
- 텍스트 인덱스
- 지리공간 인덱스
- createIndex 명령어
실전 프롬프트
분석 대시보드 쿼리
대시보드용 분석 쿼리들을 작성해줘.
PostgreSQL 사용, 테이블: users, orders, products
필요한 쿼리:
1. 오늘/이번주/이번달 매출 요약
2. 최근 7일 일별 신규 가입자
3. 상위 10개 인기 상품
4. 구매 전환율 (장바구니 → 주문)
5. 재구매율 (30일 내 재주문)
각 쿼리에 성능 고려사항 포함
대용량 데이터 처리
대용량 테이블 처리 전략을 알려줘.
상황:
- orders 테이블 1억 건
- 매일 10만 건 추가
- 오래된 데이터 아카이빙 필요
요청:
- 파티셔닝 전략
- 아카이빙 쿼리
- 배치 처리 방법
- 락 최소화 방안
팁
| 팁 | 설명 |
|---|---|
| 테이블 구조 | 컬럼과 관계 명시 |
| 쿼리 목적 | 원하는 결과 설명 |
| 성능 요구 | 데이터 규모 언급 |
| DB 종류 | PostgreSQL, MySQL 등 명시 |
| 인덱스 포함 | 최적화도 함께 요청 |
명확한 요구사항이 정확한 쿼리를 만듭니다.