How to Generate Test Data with Foreign Keys: Complete Guide

Complete guide to generating test data that maintains foreign key relationships and referential integrity across multiple tables.

Why Foreign Keys Matter in Test Data

Realistic test data requires proper relationships:

  • Database Constraints: Your database enforces foreign keys, so your test data must too
  • Realistic Scenarios: Test how your app handles real-world data relationships
  • Query Testing: Test JOINs and complex queries with proper relationships
  • Application Logic: Verify your app correctly handles related data

Common Foreign Key Patterns

One-to-Many Relationships

Example: One user has many orders

MockBlast generates users first, then orders with valid user_id references. Each order references a real user.

Many-to-Many Relationships

Example: Users and roles (through a junction table)

MockBlast generates users and roles, then the junction table with valid foreign keys to both parent tables.

Self-Referencing Relationships

Example: Comments with parent comments

MockBlast handles self-referencing foreign keys by generating records in batches and ensuring parent references exist.

Best Practices

1. Include All Related Tables

Import your complete schema, not just individual tables. This ensures MockBlast understands all relationships and generates consistent data across tables.

2. Use Realistic Ratios

Generate realistic ratios between parent and child records. For example, if you have 1000 users, generating 10,000 orders (10 orders per user) is more realistic than 100 orders (0.1 orders per user).

3. Verify Constraints After Import

After importing your seed data, run a quick query to verify foreign key constraints. Check that all foreign key values reference existing parent records.

Related Resources

Frequently Asked Questions

How does MockBlast handle foreign key relationships?
MockBlast parses FOREIGN KEY constraints from your CREATE TABLE statements and automatically generates parent tables before child tables. All foreign key values reference valid parent table IDs, maintaining referential integrity.
Can I generate data for multiple related tables?
Yes! Import all your related tables at once. MockBlast understands the relationships and generates data in the correct order. Parent tables are populated first, then child tables with valid foreign key references.
What happens if I have circular foreign key dependencies?
MockBlast detects circular dependencies and handles them by generating placeholder values first, then updating them after all tables are populated. This ensures all foreign key constraints are satisfied.
Can I control the ratio of parent to child records?
Yes! You can specify different row counts for each table. For example, generate 1000 users and 5000 orders. MockBlast ensures all orders reference valid users, but you control the distribution.
Does MockBlast support composite foreign keys?
Yes! MockBlast supports foreign keys that reference multiple columns. It generates composite key values that match parent table composite primary keys.

Ready to Generate Mock Data?

Stop writing scripts manually. MockBlast generates production-ready seed data for Postgres, MySQL, MongoDB, and JSON in seconds.