メインコンテンツにスキップ

チームでスキーマ変更を管理する方法

10分

はじめに

チームで作業する際、データベーススキーマの変更管理は難しい場合があります。このガイドでは、Prisma Migrateを使用してスキーマ変更に効果的に共同作業し、すべてのチームメンバーが安全にスキーマ変更に貢献し、組み込む方法を示します。

前提条件

このガイドを開始する前に、以下を確認してください

  • Node.jsがインストールされていること(バージョン18以上)
  • マイグレーションでPrismaプロジェクトがセットアップされていること
  • リレーショナルデータベース(PostgreSQL、MySQL、SQLite、SQL Serverなど)
  • Gitの基本的な理解
  • Prisma Migrateの基本的な知識
警告

このガイドはMongoDBには適用されません
migrate devの代わりに、db pushMongoDBに使用されます。

1. マイグレーションの基本を理解する

1.1. マイグレーションの順序

マイグレーションは、作成された順序と同じ順序で適用されます。作成日は、マイグレーションサブフォルダ名の一部です。たとえば、20210316081837-updated-fields2021-03-16-08:18:37に作成されました。

1.2. ソース管理の要件

以下のファイルをソース管理にコミットする必要があります

  • migration_lock.tomlファイルを含む、.prisma/migrationsフォルダの内容
  • Prisma Schema (schema.prisma)

schema.prismaファイルをソース管理するだけでは不十分です。マイグレーション履歴を含める必要があります。なぜなら

  • カスタマイズされたマイグレーションには、Prismaスキーマでは表現できない情報が含まれている
  • prisma migrate deployコマンドはマイグレーションファイルのみを実行する

2. チームの変更を組み込む

2.1. 最新の変更をプルする

共同作業者からの変更を組み込むには

  1. 変更されたPrismaスキーマと./prisma/migrationsフォルダをプルする
  2. migrateコマンドを実行する
npx prisma migrate dev

2.2. シナリオ例

3人の開発者がスキーマ変更を共有するサンプルシナリオを見ていきましょう

schema.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}

3. 同時変更を処理する

3.1. 開発者Aの変更

アニアが新しいフィールドを追加

model User {
/* ... */
favoriteColor String?
}

そしてマイグレーションを生成

npx prisma migrate dev --name new-field

3.2. 開発者Bの変更

ハビエルが新しいモデルを追加

model Tag {
tagName String @id
tagCategory Category
}

そしてマイグレーションを生成

npx prisma migrate dev --name new-model

3.3. 変更をマージする

マイグレーション履歴に2つの新しいマイグレーションが追加されました

A diagram showing changes by two separate developers converging in a single migration history.

4. 変更を統合する

4.1. チームの変更をプルする

  1. 最新の変更をプルする

    • 2つの新しいマイグレーション
    • 更新されたスキーマファイル
  2. マージされたスキーマを確認する

model User {
/* ... */
favoriteColor String?
bestPacmanScore Int?
}

model Tag {
tagName String @id
tagCategory Category
posts Post[]
}

4.2. マイグレーションを生成する

migrateコマンドを実行する

npx prisma migrate dev

これは以下を行います

  1. チームのマイグレーションを適用する
  2. 自分の変更のための新しいマイグレーションを作成する
  3. 新しいマイグレーションを適用する

4.3. 変更をコミットする

コミット

  • マージされたschema.prisma
  • 新しいマイグレーションファイル

次のステップ

チームスキーマの管理を理解したので、次のことができます

詳細情報


Prismaとのつながりを保つ

Prismaの旅を続けるには、以下とつながってください アクティブなコミュニティ。最新情報を入手し、参加し、他の開発者と協力してください

私たちは皆様のご参加を心から歓迎し、コミュニティの一員として皆様をお迎えできることを楽しみにしています!