2025.3.21 금요일의 공부기록
Prisma의 모델(Model) 이란 애플리케이션에서 사용하는 데이터를 구조화하고 정의하는 개념이다. 좀 더 쉽게 말하면, 데이터베이스에 저장될 데이터를 어떤 방식으로 저장할지, 어떤 필드를 사용할지, 각 필드가 어떤 특성을 갖고 있어야 하는지 등을 Prisma 모델로 미리 정의할 수 있다.
Prisma는 이러한 모델을 데이터베이스의 테이블(관계형 데이터베이스)이나 컬렉션(MongoDB 등)에 자동으로 매핑해준다. 즉, Prisma 모델은 데이터베이스의 설계도를 만드는 역할을 한다.
다음은 일반적으로 사용하는 User
모델의 예시다.
model User {
id Int @id @default(autoincrement())
username String @unique
email String? @unique
password String?
phone String? @unique
githubId String? @unique
avatar String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
id:
사용자 식별을 위한 기본 키(Primary Key)로, 자동 증가하는 숫자로 설정된다. (autoincrement()
)
username:
사용자의 이름으로, 중복을 허용하지 않기 위해 @unique
옵션을 사용한다.
email:
선택적인 필드로, 사용자의 이메일을 저장한다. 이 필드는 필수가 아니라서 빈 값도 가능하다. 이메일은 고유성을 보장하기 위해 중복을 허용하지 않는다.
password:
비밀번호 필드로, OAuth나 SNS 로그인 등 다른 인증 방식을 사용할 경우 필수가 아니므로 선택적 필드로 설정한다.
phone:
전화번호로, 중복을 방지하기 위해 유니크 옵션을 사용한다.
githubId:
GitHub 로그인 시 제공되는 고유 아이디로, OAuth 로그인 방식의 사용자를 위해 선택적 필드로 설정한다.
avatar:
사용자의 프로필 이미지를 저장하는 필드다. URL 형태로 보통 저장된다.
createdAt:
데이터가 최초로 만들어진 날짜와 시간을 자동으로 기록한다.
updatedAt:
데이터가 수정될 때마다 자동으로 현재 시간이 기록된다.
마이그레이션(Migration)은 데이터베이스의 구조(테이블의 생성, 변경, 삭제 등)를 관리하는 작업을 뜻한다. Prisma에서는 모델을 변경할 때마다 변경사항을 데이터베이스에 안전하게 반영하는 방식을 마이그레이션을 통해 제공한다.
즉, 모델을 새로 만들거나 수정할 때 Prisma 마이그레이션 명령어를 통해 데이터베이스 구조를 쉽게 관리할 수 있다.
개발 환경에서는 다음 명령어를 사용하여 마이그레이션을 생성하고 적용한다.
npx prisma migrate dev
이 명령어를 실행하면 다음 작업이 진행된다.
모델 변경사항 확인
Prisma는 스키마(schema.prisma
)와 현재 데이터베이스 상태를 비교한다.
마이그레이션 파일 생성
변경된 사항을 SQL 형식으로 자동으로 생성하여 prisma/migrations
디렉토리에 저장한다.
마이그레이션 자동 적용
만들어진 마이그레이션 파일을 데이터베이스에 자동으로 적용한다.
Prisma Client 자동 갱신
마이그레이션 이후, Prisma Client가 자동으로 업데이트된다.
npx prisma migrate deploy
데이터베이스를 시각적으로 관리하고 확인하려면 VSCode의 SQLite Viewer 확장 프로그램이 매우 유용하다.
다음 링크에서 VSCode 확장 프로그램을 설치한다.
database.db
)을 직접 열어볼 수 있다.Prisma를 처음 사용할 때 흔히 하는 실수는 다음과 같다.
모델 정의를 자주 변경하고, 마이그레이션을 실행하지 않는 경우
→ 반드시 모델을 수정한 후 npx prisma migrate dev
를 실행하여 데이터베이스와 스키마를 동기화한다.
마이그레이션을 프로덕션 환경에서 개발용 명령어로 실행하는 경우
→ 프로덕션 환경에서는 npx prisma migrate deploy
명령어만 사용하여 데이터 손실을 방지한다.
선택적 필드를 제대로 설정하지 않는 경우
→ 선택적 필드로 설정해야 하는 필드에는 항상 물음표(?
)를 붙여서 명확히 표현한다.
npx prisma migrate dev
명령어를 사용한다.npx prisma migrate deploy
를 사용하여 데이터 안전성을 보장한다.이러한 내용을 통해 Prisma를 효과적으로 사용할 수 있으며, 안정적이고 빠른 데이터베이스 개발이 가능해진다.