シンプルなSQLテーブルをPrisma Modelに変換する

基本的なSQL CREATE TABLE文をPrismaスキーマのmodelに変換する方法を学びます。カラムからフィールドへのマッピング、型推論、@idディレクティブを解説します。

Basic Models

詳細な説明

CREATE TABLEからPrisma Modelへ

最も基本的な変換は、SQLのCREATE TABLE文をPrismaのmodelブロックに変換することです。各カラムはPrismaのスカラー型を持つフィールドになり、PRIMARY KEYのような制約はPrisma属性にマッピングされます。

SQLの例

CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(320) NOT NULL,
  age INTEGER,
  is_active BOOLEAN NOT NULL DEFAULT true
);

生成されるPrismaスキーマ

model User {
  id       Int     @id
  name     String
  email    String
  age      Int?
  isActive Boolean @default(true)

  @@map("users")
}

主要なマッピングルール

SQL要素 Prismaの対応
テーブル名 model名(PascalCase)+ @@map("original_name")
カラム名 フィールド名(camelCase)+ 名前が異なる場合は@map("column_name")
NOT NULL フィールドは必須(Prismaのデフォルト)
Nullableカラム 型に?を付加
PRIMARY KEY @id属性
DEFAULT @default(...)属性

テーブルとカラムの命名

Prismaの規約では、model名にPascalCase、フィールド名にcamelCaseを使用します。SQLテーブルがsnake_caseを使用している場合、コンバーターはmodelに@@map("table_name")ディレクティブを生成し、camelCase変換後に名前が異なるフィールドには@map("column_name")ディレクティブを生成します。

Nullable vs 必須フィールド

SQLでは、NOT NULLが指定されない限りカラムはデフォルトでnullableです。Prismaはこれを逆転させ、フィールドはデフォルトで必須です。コンバーターはnullableなSQLカラムにPrismaで?を付け、NOT NULLカラムはそのまま必須フィールドとします。

デフォルト値

SQLのDEFAULT句はPrismaの@default()属性に変換されます。truefalse、数値リテラル、NOW()などの一般的なデフォルトは直接マッピングされます。より複雑なSQL式は@default(dbgenerated("..."))として保持される場合があります。

この基本的なテーブルからmodelへの変換は、他のすべてのパターンの基礎です。このマッピングを理解すれば、リレーション、インデックス、enum、高度な機能にも対応できます。

ユースケース

既存のSQLデータベースにシンプルなテーブルがあり、Prisma ORMの使用を開始したい場合に、既存のDDLをPrismaスキーマに変換することで、すべてのmodel定義を手動で記述することなくプロジェクトを立ち上げることができます。

試してみる — SQL to Prisma Schema

フルツールを開く