Aphelion (The Engine)

How to Mock Data with Complex Composite Foreign Keys

The only synthetic data generator combining industry standards for research, clinical operations, and pharmaceutical testing

March 31, 2026 • 10 min read • Database Design

Single-column foreign keys are easy. But in enterprise multi-tenant SaaS applications, you frequently encounter Composite Foreign Keys—where a relationship is defined by two or more columns acting together.

Generating synthetic test data for composite keys breaks almost every open-source mocking tool on the market.

The Code Problem: The Multi-Tenant Trap

-- 1. The Parent Table (Composite Primary Key)

CREATE TABLE tenant_users (

tenant_id UUID,

user_id UUID,

role VARCHAR(50),

PRIMARY KEY (tenant_id, user_id)

);

-- 2. The Child Table (Composite Foreign Key)

CREATE TABLE user_audit_logs (

log_id UUID PRIMARY KEY,

tenant_id UUID,

user_id UUID,

action VARCHAR(255),

-- The constraint spans TWO columns

FOREIGN KEY (tenant_id, user_id) REFERENCES tenant_users(tenant_id, user_id)

);

Why Faker.js and Custom Scripts Fail

A generic script might successfully query the parent table to get a list of valid tenant_ids and user_ids. But if it randomly assigns a tenant_id and randomly assigns a user_id to the audit log, it will create a tuple that doesn't actually exist in the parent table (e.g., assigning User B to Tenant A's log). The database rejects the row instantly.

The Aphelion Solution

Aphelion builds a topological dependency graph. When it detects a composite foreign key, it treats the multi-column tuple as a single unified entity. When it populates the child table, it pulls the exact paired (tenant_id, user_id) tuple directly from the parent, ensuring perfect multi-column referential integrity.

Recipe: Seeding Composite Keys

# 1. Map the composite dependencies

aphelion introspect postgres://admin:password@localhost:5432/saas_db

# 2. Generate valid multi-tenant logs

aphelion generate --table user_audit_logs --rows 100000 --seed 2026

Tags: #Healthcare #OMOP #OpenMRS #SyntheticData #FHIR #HIPAA #DataGeneration

Ready for Verifiable Synthetic Data?

Discover how CausalFoundry manufactures high-integrity datasets that obey your complex business rules.

Explore CausalFoundry