데이터베이스 프롬프트

프롬프트코딩데이터베이스SQLMongoDB

데이터베이스 작업을 위한 효과적인 프롬프트 패턴을 알아봅니다.


데이터베이스 프롬프트 구조


스키마 설계

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 등 명시
인덱스 포함최적화도 함께 요청

명확한 요구사항이 정확한 쿼리를 만듭니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.