無料ツール
Prisma スキーマを ER 図に変換
schema.prisma ファイルを貼り付けるか、複数ファイルに分かれたスキーマのファイルをすべてドロップすると、ER 図ができます。モデルごとにスカラーフィールドとキーを載せたカードを作り、暗黙の多対多リレーションも含め、リレーションごとに線を引きます。試すだけならアカウントは不要です。
出力例
使い方
Prisma スキーマを貼り付けるかドロップ
schema.prisma ファイル、または prisma/schema フォルダー内の .prisma ファイルをまとめてドロップできます。datasource ブロックと generator ブロックは残したままで構いません。読み取るのは provider だけです。
モデルとリレーションを確認
各モデルは、スカラーフィールドとその Prisma の型を載せたカードになります。fields と references を持つリレーションは、外部キーのフィールドから参照先のフィールドへの線になります。
Archboard で開く
新しい図として保存すれば、配置の変更、注釈の追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。
Prisma スキーマから描かれるもの
図は schema.prisma の次の部分から作られます。
modelモデルごとにモデル名のカードを作り、スカラーフィールドごとに 1 行で、String? や Int[] のように Prisma の書き方で型を示します。enum 型や複合型のフィールドも一覧に入ります。
@relationfieldsreferencesfields と references を持つリレーションは、外部キーのフィールドから参照先のフィールドへ、鳥の足記法(IE記法)の線端で描かれます。外部キーが一意なら 1 対 1、リレーションフィールドが任意なら相手側の端が任意になります。複合外部キーにも対応しています。
Category[]Product[]Category[] と Product[] のように 2 つのモデルが互いをリストで持つ暗黙の多対多リレーション。Prisma が裏で作る結合テーブルは描かず、両端が「多」の 1 本の線で示します。
@id@@idフィールドの id 属性や、複数フィールドにまたがるブロックレベルの id から得た主キー。該当する各フィールドに PK の印が付きます。
@unique@@unique一意なフィールド。UK の印が付きます。複数フィールドにまたがるブロックレベルの一意制約は各フィールドに印を付けませんが、外部キーがちょうどそれらのフィールドから成るリレーションは 1 対 1 として描かれます。
@@schemaマルチスキーマのプロジェクトでデータベーススキーマに割り当てたモデル。スキーマごとの枠の中に描かれます。
typeMongoDB のスキーマで type として宣言した複合型。別のカードではなく、それを埋め込むフィールドの型として表示します。
Prisma から描いた図に含まれないもの
- posts Post[] や author User のようなリレーションフィールド。データベースではなく Prisma のレベルにだけ存在するため、行ではなく線になり、カードにはデータベースに保存されるフィールドだけが並びます。
- 含めなかったファイルにあるモデルへのリレーション。スキーマが複数ファイルに分かれている場合はすべてまとめてドロップしてください。見つからないモデルは描かれず、警告で知らせます。
- view ブロックで宣言したビュー(読み飛ばして件数を数えます)と、ignore 属性を付けたモデルやフィールド。
- autoincrement()、now()、dbgenerated の式などのデフォルト値、VarChar(255) のようなデータベース固有の型、ドキュメントコメント、datasource の URL。
Prisma スキーマに関する質問
スキーマが複数のファイルに分かれています。どうすれば図にできますか?
prisma/schema フォルダーごとドロップするか、その中の .prisma ファイルをまとめて選択してください。1 つのスキーマとして読み込むので、別々のファイルにあるモデル間のリレーションも描かれます。1 ファイルだけでも使えますが、その場合は他のファイルにあるモデルへのリレーションが警告として一覧表示されます。
MongoDB のスキーマでも使えますか?
はい。provider が mongodb の場合、複合型はフィールドの型として表示され、ObjectId の外部キーはリレーションの線になります。両方のモデルに ID のリストとして保存する多対多リレーションは、FK の印なしの 1 本の線で描かれます。
図にはモデル名とテーブル名のどちらが使われますか?
モデル名、つまり Prisma Client で使う名前です。map 属性で指定したテーブル名や列名は表示されないため、customers テーブルにマッピングした Customer モデルは Customer と表示されます。
暗黙の多対多リレーションはどう表示されますか?
2 つのモデルの間に、両端が「多」の 1 本の線として表示されます。Prisma はこうしたリレーションを _CategoryToProduct のような裏側の結合テーブルに保存しますが、そのテーブルは描きません。自分でモデル化したリレーションテーブルは、2 つのリレーションを持つ通常のカードとして表示されます。
Archboard で開くと何が保存されますか?
プレビューは保存されません。「Archboard で開く」を選ぶと、モデルのカード、フィールド名と型、リレーションの線を含む描かれた図が、新しい図としてワークスペースに保存されます。あとで schema.prisma を変更しても図は更新されません。
Prisma の ER 図ツールは無料ですか?
はい。スキーマの貼り付けと図の表示にアカウントは不要です。図を Archboard で開くには無料アカウントが必要です。