外部キーリレーションを持つテーブルのシードデータ
外部キーを持つ関連テーブルのシード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から始まる連番整数を生成します。
参照整合性の確保
有効な参照を維持するために、以下のガイドラインに従ってください:
- 親テーブルを先に生成 — employeesの前にdepartments
- 行数を合わせる — 5つのdepartmentsを生成した場合、employeesの
department_id値が1〜5であることを確認 - 依存順序でテーブルを貼り付ける — ツールは入力にテーブルが現れる順序でINSERT文を生成
実用的な戦略
クイックアプローチ:
- 10のdepartments(ID 1〜10)を生成
department_id値が自然に小さな整数の範囲になる100のemployeesを生成_idヒューリスティックは1から始まる連番値を生成し、親テーブルのオートインクリメントIDと一致
制限事項
ジェネレーターはテーブル間のクロスリファレンスを行わず、employeesテーブルの各department_idが既存のdepartmentと一致するかの検証はしません。テスト環境での厳密な参照整合性のために、一部の値を手動で調整するか、先に親データを挿入して外部キー範囲を制約する必要があるかもしれません。
ユースケース
部署と従業員を持つ人事管理アプリケーションを開発しています。結合クエリ、部署フィルター、組織図の表示をテストできるよう、すべての従業員が有効な部署を参照するテストデータで両テーブルを埋める必要があります。