外部キーリレーションを持つテーブルのシードデータ

外部キーを持つ関連テーブルのシードINSERT文を生成します。テストデータにおける親子テーブル関係の処理方法を学びます。

Use Cases

詳細な説明

関連テーブルのシーディング

ほとんどのデータベースには外部キーで接続されたテーブルがあります。シードデータを生成する際、挿入順序と参照IDの有効性が重要です。

スキーマの例

CREATE TABLE departments (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  location VARCHAR(100)
);

CREATE TABLE employees (
  id SERIAL PRIMARY KEY,
  first_name VARCHAR(100) NOT NULL,
  last_name VARCHAR(100) NOT NULL,
  email VARCHAR(255) NOT NULL,
  department_id INTEGER NOT NULL REFERENCES departments(id),
  hire_date DATE NOT NULL
);

外部キーの処理方法

シードジェネレーターは外部キーカラム(department_id)を通常のintegerカラムとして扱います。値を生成する際、_idサフィックスのカラム名ヒューリスティックを使用し、1から始まる連番整数を生成します。

参照整合性の確保

有効な参照を維持するために、以下のガイドラインに従ってください:

  1. 親テーブルを先に生成 — employeesの前にdepartments
  2. 行数を合わせる — 5つのdepartmentsを生成した場合、employeesのdepartment_id値が1〜5であることを確認
  3. 依存順序でテーブルを貼り付ける — ツールは入力にテーブルが現れる順序でINSERT文を生成

実用的な戦略

クイックアプローチ:

  • 10のdepartments(ID 1〜10)を生成
  • department_id値が自然に小さな整数の範囲になる100のemployeesを生成
  • _idヒューリスティックは1から始まる連番値を生成し、親テーブルのオートインクリメントIDと一致

制限事項

ジェネレーターはテーブル間のクロスリファレンスを行わず、employeesテーブルの各department_idが既存のdepartmentと一致するかの検証はしません。テスト環境での厳密な参照整合性のために、一部の値を手動で調整するか、先に親データを挿入して外部キー範囲を制約する必要があるかもしれません。

ユースケース

部署と従業員を持つ人事管理アプリケーションを開発しています。結合クエリ、部署フィルター、組織図の表示をテストできるよう、すべての従業員が有効な部署を参照するテストデータで両テーブルを埋める必要があります。

試してみる — Database Seed Generator

フルツールを開く