Synthetic data (MST)
Release a differentially private synthetic copy of a table. Every row is generated; none is copied from the source.
Central DP: the database reads the real table, measures a few noisy statistics of it, and generates new rows from those statistics only. The list of values each column can take is read from the table and treated as public.
SELECT anon.dp_mst_synthesize(
'original.healthcare', -- source table
'synthetic_healthcare', -- new table to create
ARRAY['satisfaction_rating', 'symptom_severity',
'wait_time_rating', 'department'],
epsilon => 1.0,
delta => 1e-9
);
-- budget: (ε, δ) → ρ-zCDP, split in three
-- 1. Gaussian noise on every 1-way marginal ρ/3
-- 2. exponential mechanism picks d−1 column pairs (tree) ρ/3
-- 3. Gaussian noise on the selected 2-way marginals ρ/3
-- then fit one model to the noisy marginals and sample rows (no extra budget)