framework/Prisma
✅ Prisma Schema 완전 정복 – schema.prisma의 모든 것
octo54
2025. 5. 27. 11:00
반응형
✅ Prisma Schema 완전 정복 – schema.prisma의 모든 것
"Prisma에서 가장 중요한 파일은 단연 schema.prisma입니다."
데이터 모델링, 마이그레이션, Client 생성까지 모두 여기서 시작됩니다.
📁 Prisma Schema란?
schema.prisma 파일은 Prisma ORM의 핵심 설정 파일입니다.
여기에는 다음 3가지 블록이 포함됩니다:
- generator
- datasource
- model (또는 enum, type, view, composite type)
🔧 1. Generator 블록
Prisma가 어떤 코드를 생성할지 지정합니다.
generator client {
provider = "prisma-client-js"
}
항목 설명
provider | Prisma Client를 생성할 도구 (기본값: JS) |
output | 생성된 클라이언트 파일 경로 (선택) |
🔌 2. Datasource 블록
어떤 데이터베이스와 연결할지를 지정합니다.
datasource db {
provider = "postgresql" // 또는 mysql, sqlite, mongodb, cockroachdb 등
url = env("DATABASE_URL")
}
필드 설명
provider | 사용하는 DB 종류 |
url | 연결 URL (보통 .env에 설정) |
relationMode | 외래 키 사용 방식 (prisma 또는 foreignKeys) – PlanetScale 등에서 중요 |
🧱 3. Model 정의 블록
반응형
테이블(또는 컬렉션) 단위의 데이터 구조를 정의합니다.
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
어노테이션 기능
@id | Primary Key |
@default() | 기본값 설정 |
@unique | 유니크 제약조건 |
@relation() | 관계형 설정 (외래 키) |
@map() | 실제 DB 컬럼명 매핑 |
@@map() | 실제 테이블명 매핑 |
@@unique([a, b]) | 복합 유니크 제약 |
🎨 기타 스키마 구성 요소
✅ Enum 정의
enum Role {
USER
ADMIN
SUPERADMIN
}
✅ Embedded/Composite Type (MongoDB or preview)
type Address {
street String
city String
}
🧠 실전 팁: schema.prisma 작성 전략
상황 전략
빠른 모델링 | npx prisma db push로 DB 반영 |
협업 개발 | prisma migrate dev로 Git 이력 관리 |
기존 DB 연동 | prisma db pull로 자동 모델 생성 |
실시간 타입 동기화 | npx prisma generate 반복 사용 |
✅ Prisma Schema 작동 흐름 요약
schema.prisma
↓
Prisma Migrate → DB 스키마 생성
↓
Prisma Generate → 타입 안전 Prisma Client 생성
↓
앱 코드에서 ORM처럼 사용 (prisma.user.findMany())
Prisma Schema 정의,Prisma schema.prisma 구조,Prisma 모델링 방법,Prisma 어노테이션 설명,Prisma Client 생성,Prisma DB 연결,Prisma 마이그레이션,타입 안전 ORM,Prisma enum 사용법,Prisma schema 예제