YASD-TECH
YASD TECH
# Prisma

マッピング(フィールド・テーブル名)

投稿日:2026/4/26

更新日:2026/4/26

ttitleImage

概要

Prismaの @map@@map を使うと、「データベース上の名前」と「TypeScript(アプリ側)で使う名前」を切り離すことができます。
これにより、DBのスキーマ(構造)を変更することなく、TypeScript側のコードを扱いやすい命名に最適化できます。

1. @map — カラム名のマッピング

DBのカラム名と、TypeScriptで扱うプロパティ名を別々に設定します。

model User {
  id        Int      @id @default(autoincrement())
  
  // DB上は "created_at" だが、TypeScriptでは "createdAt" として扱う
  createdAt DateTime @map("created_at")
}
  • TypeScriptでの名前: user.createdAt (キャメルケースで扱いやすい)
  • DB上のカラム名: created_at (DBの一般的な命名規則)

2. @@map — テーブル名のマッピング

DBのテーブル名と、Prismaのモデル名(=TypeScriptでの型名)を別々に設定します。

// TypeScript上は単数形の "User" というモデル名(型名)にする
model User {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @map("created_at")

  // DB上は複数形の "users" というテーブル名にする
  @@map("users")
}
  • TypeScriptでの名前: User 型 / prisma.user
  • DB上のテーブル名: users

3. 使いどころ(ユースケース)

  • 命名規則のズレを吸収する(最も一般的な用途)
    DBの文化(スネークケース: mock_exams, created_at)と、TypeScriptの文化(パスカル/キャメルケース: MockExam, createdAt)のギャップを埋めます。
  • 古いDB(レガシーDB)の扱いを楽にする
    既存のDBに del_flgusr_nm のような分かりにくいカラム名がある場合、DB側はそのままにしつつ、TypeScript側だけ isDeleteduserName のような綺麗な名前に変更できます。
  • 型の意味をより具体的にする
    DBのカラム名が汎用的な note(備考)や body(本文)であっても、TypeScript側では noteHtmlbodyMarkdown のように、データ形式や用途がひと目で分かる名前にリネームできます。

4. まとめ(イメージ図)

【データベースの世界】                【Prismaの翻訳】               【TypeScriptの世界】

テーブル: mock_exams   <-- @@map("mock_exams") -->  モデル: MockExam
カラム:   created_at   <-- @map("created_at")  -->  プロパティ: createdAt

結論:
Prismaが「DBの言葉」と「TypeScriptの言葉」を自動で翻訳してくれるため、開発者はDB側の命名に引きずられることなく、TypeScriptの綺麗な世界だけでコーディングに集中できます。

Index

  • 概要
  • 1. @map — カラム名のマッピング
  • 2. @@map — テーブル名のマッピング
  • 3. 使いどころ(ユースケース)
  • 4. まとめ(イメージ図)