Prisma-models

Odyssey·2025년 3월 20일
0

Next.js_study

목록 보기
35/58
post-thumbnail

2025.3.21 금요일의 공부기록

Prisma 모델(Models)이란?

Prisma의 모델(Model) 이란 애플리케이션에서 사용하는 데이터를 구조화하고 정의하는 개념이다. 좀 더 쉽게 말하면, 데이터베이스에 저장될 데이터를 어떤 방식으로 저장할지, 어떤 필드를 사용할지, 각 필드가 어떤 특성을 갖고 있어야 하는지 등을 Prisma 모델로 미리 정의할 수 있다.

Prisma는 이러한 모델을 데이터베이스의 테이블(관계형 데이터베이스)이나 컬렉션(MongoDB 등)에 자동으로 매핑해준다. 즉, Prisma 모델은 데이터베이스의 설계도를 만드는 역할을 한다.

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:
    데이터가 수정될 때마다 자동으로 현재 시간이 기록된다.

📌 Prisma 모델 공식 문서 바로가기


Prisma 마이그레이션(Migration)이란?

마이그레이션(Migration)은 데이터베이스의 구조(테이블의 생성, 변경, 삭제 등)를 관리하는 작업을 뜻한다. Prisma에서는 모델을 변경할 때마다 변경사항을 데이터베이스에 안전하게 반영하는 방식을 마이그레이션을 통해 제공한다.

즉, 모델을 새로 만들거나 수정할 때 Prisma 마이그레이션 명령어를 통해 데이터베이스 구조를 쉽게 관리할 수 있다.

개발 환경에서 마이그레이션 수행하기

개발 환경에서는 다음 명령어를 사용하여 마이그레이션을 생성하고 적용한다.

npx prisma migrate dev

이 명령어를 실행하면 다음 작업이 진행된다.

  1. 모델 변경사항 확인
    Prisma는 스키마(schema.prisma)와 현재 데이터베이스 상태를 비교한다.

  2. 마이그레이션 파일 생성
    변경된 사항을 SQL 형식으로 자동으로 생성하여 prisma/migrations 디렉토리에 저장한다.

  3. 마이그레이션 자동 적용
    만들어진 마이그레이션 파일을 데이터베이스에 자동으로 적용한다.

  4. Prisma Client 자동 갱신
    마이그레이션 이후, Prisma Client가 자동으로 업데이트된다.

주의할 점

  • 개발 환경에서만 사용해야 한다. 프로덕션 환경에서는 데이터 손실 위험이 있으므로 절대 사용하지 않는다.
  • 프로덕션에서는 반드시 다음 명령어를 사용해야 한다.
npx prisma migrate deploy

📌 Prisma 마이그레이션 공식 문서 바로가기


SQLite Viewer를 이용한 데이터베이스 관리하기

데이터베이스를 시각적으로 관리하고 확인하려면 VSCode의 SQLite Viewer 확장 프로그램이 매우 유용하다.

SQLite Viewer 설치하기

다음 링크에서 VSCode 확장 프로그램을 설치한다.

SQLite Viewer로 할 수 있는 작업

  • 데이터베이스 파일(database.db)을 직접 열어볼 수 있다.
  • 테이블의 구조를 시각적으로 볼 수 있다.
  • 데이터를 직관적으로 추가하거나 수정할 수 있다.
  • SQL 쿼리를 VSCode 내에서 직접 실행하여 결과를 확인할 수 있다.

Prisma로 개발할 때 흔히 하는 실수들 정리

Prisma를 처음 사용할 때 흔히 하는 실수는 다음과 같다.

  • 모델 정의를 자주 변경하고, 마이그레이션을 실행하지 않는 경우
    → 반드시 모델을 수정한 후 npx prisma migrate dev를 실행하여 데이터베이스와 스키마를 동기화한다.

  • 마이그레이션을 프로덕션 환경에서 개발용 명령어로 실행하는 경우
    → 프로덕션 환경에서는 npx prisma migrate deploy 명령어만 사용하여 데이터 손실을 방지한다.

  • 선택적 필드를 제대로 설정하지 않는 경우
    → 선택적 필드로 설정해야 하는 필드에는 항상 물음표(?)를 붙여서 명확히 표현한다.


정리와 핵심 요약

  • Prisma 모델은 데이터베이스 테이블을 정의하는 핵심 구조이다.
  • Prisma 마이그레이션은 데이터베이스의 구조 변경사항을 관리하는 자동화된 도구이다.
  • 개발 환경에서는 마이그레이션 생성 및 적용npx prisma migrate dev 명령어를 사용한다.
  • 프로덕션 환경에서는 npx prisma migrate deploy를 사용하여 데이터 안전성을 보장한다.
  • SQLite Viewer 등 GUI 도구를 통해 시각적으로 데이터를 관리할 수 있다.

이러한 내용을 통해 Prisma를 효과적으로 사용할 수 있으며, 안정적이고 빠른 데이터베이스 개발이 가능해진다.

0개의 댓글