シンプルなSQLテーブルをPrisma Modelに変換する
基本的なSQL CREATE TABLE文をPrismaスキーマのmodelに変換する方法を学びます。カラムからフィールドへのマッピング、型推論、@idディレクティブを解説します。
詳細な説明
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()属性に変換されます。true、false、数値リテラル、NOW()などの一般的なデフォルトは直接マッピングされます。より複雑なSQL式は@default(dbgenerated("..."))として保持される場合があります。
この基本的なテーブルからmodelへの変換は、他のすべてのパターンの基礎です。このマッピングを理解すれば、リレーション、インデックス、enum、高度な機能にも対応できます。
ユースケース
既存のSQLデータベースにシンプルなテーブルがあり、Prisma ORMの使用を開始したい場合に、既存のDDLをPrismaスキーマに変換することで、すべてのmodel定義を手動で記述することなくプロジェクトを立ち上げることができます。