データベースの用語一覧へ
このページの目次
データベース中級図解あり

シードデータとは?

読み方:シードデータ

最終更新:2026/08/18

3秒でわかる

開発環境やテスト環境に最初から入れておく初期データ。空の DB では動作確認もデモもできないため、誰が実行しても同じ状態を作れる形で用意します。

30秒図解

シードデータは空のDBへ書籍、文具、食品の3カテゴリをupsertし、2回目以降も重複せず同じ初期状態を再現する
シードは空を埋めるだけでなく、同じ手順で同じ状態を再現する仕組みです。

もう少し詳しく

どういうものか

シードデータは、作ったばかりのデータベースに最初から流し込んでおくデータのことです。種 (seed) をまくように、空のテーブルへ最初の中身を入れることからこう呼ばれます。

中身は 2 種類に分かれます。ひとつは、都道府県一覧や商品カテゴリ、権限の区分のように本番環境でも必要なマスタデータ。もうひとつは、開発中に画面を確認するためのダミーのユーザーや注文で、こちらは本番には入れません。この 2 つを別のスクリプトに分けておくのが実務での定石です。

なぜ必要か

データが空の状態では、一覧画面は何も出ず、ページ送りも並べ替えも検証できません。開発者が手作業でフォームから登録して確認する運用にすると、人によって作るデータが違い、「自分の環境では再現しない」不具合が生まれます。

新しく参加した人が git clone して数コマンドで動く状態になるかどうかも、シードの有無で決まります。テストでも、実行前に同じシードを流し込むことで、前のテストが残したデータに結果が左右されなくなります。

具体例

同じ内容で何度実行しても結果が変わらないよう、upsert で書きます。

// prisma/seed.js import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); const categories = [ { id: 1, name: "書籍" }, { id: 2, name: "文具" }, { id: 3, name: "食品" }, ]; for (const c of categories) { await prisma.category.upsert({ where: { id: c.id }, update: { name: c.name }, // 既にあれば名前だけ更新 create: c, // 無ければ作る }); } await prisma.$disconnect();
-- <a href="/glossary/sql" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">SQL</a> で書く場合も、重複実行で落ちない形にしておく INSERT INTO categories (id, name) VALUES (1, '書籍'), (2, '文具'), (3, '食品') ON DUPLICATE KEY UPDATE name = VALUES(name);

つまずきやすいところ

  • 何度も実行できない書き方にする。素の INSERT だけで書くと 2 回目で主キー重複エラーになります。upsert か、削除してから入れ直す形にします

  • 外部キーの順番を無視して流し、参照先が無いというエラーになる。親テーブルから先に入れます

  • ダミーデータと本番マスタを同じスクリプトに混ぜる。本番でテストユーザーが作られる事故につながるので、ファイルもコマンドも分けます

  • 実在しそうなメールアドレスや電話番号をダミーに使う。テストメールが実在の相手に届く危険があるため、example.com のような予約済みドメインを使います

  • 日付を固定値で埋め、時間が経つと「3 年前の新着」になる。現在時刻からの相対で生成すると劣化しません
  • 覚え方

    シードは「誰が何回流しても同じ状態になる初期データ」。この 2 条件を満たしていない時点で、シードではなく手作業の記録になっています。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地シードデータDB

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    DB設計入門 ER図・正規化・インデックス

    47レッスン
    コース

    Node.js入門

    55レッスン
    コース

    SQL入門:データベース操作のきほん

    71レッスン
    SQL・データベースコースの全編を見る