投稿日:2026/4/26
更新日:2026/4/26

Prismaの @map と @@map を使うと、「データベース上の名前」と「TypeScript(アプリ側)で使う名前」を切り離すことができます。
これにより、DBのスキーマ(構造)を変更することなく、TypeScript側のコードを扱いやすい命名に最適化できます。
@map — カラム名のマッピングDBのカラム名と、TypeScriptで扱うプロパティ名を別々に設定します。
model User {
id Int @id @default(autoincrement())
// DB上は "created_at" だが、TypeScriptでは "createdAt" として扱う
createdAt DateTime @map("created_at")
}
user.createdAt (キャメルケースで扱いやすい)created_at (DBの一般的な命名規則)@@map — テーブル名のマッピングDBのテーブル名と、Prismaのモデル名(=TypeScriptでの型名)を別々に設定します。
// TypeScript上は単数形の "User" というモデル名(型名)にする
model User {
id Int @id @default(autoincrement())
createdAt DateTime @map("created_at")
// DB上は複数形の "users" というテーブル名にする
@@map("users")
}
User 型 / prisma.userusersmock_exams, created_at)と、TypeScriptの文化(パスカル/キャメルケース: MockExam, createdAt)のギャップを埋めます。del_flg や usr_nm のような分かりにくいカラム名がある場合、DB側はそのままにしつつ、TypeScript側だけ isDeleted や userName のような綺麗な名前に変更できます。note(備考)や body(本文)であっても、TypeScript側では noteHtml や bodyMarkdown のように、データ形式や用途がひと目で分かる名前にリネームできます。【データベースの世界】 【Prismaの翻訳】 【TypeScriptの世界】
テーブル: mock_exams <-- @@map("mock_exams") --> モデル: MockExam
カラム: created_at <-- @map("created_at") --> プロパティ: createdAt
結論:
Prismaが「DBの言葉」と「TypeScriptの言葉」を自動で翻訳してくれるため、開発者はDB側の命名に引きずられることなく、TypeScriptの綺麗な世界だけでコーディングに集中できます。