CREATE TABLE IF NOT EXISTS milestone_achievements ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), child_id UUID NOT NULL REFERENCES children(id) ON DELETE CASCADE, family_id UUID NOT NULL, milestone_key TEXT NOT NULL, achieved_at DATE NOT NULL, notes TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE(child_id, milestone_key) ); CREATE INDEX IF NOT EXISTS milestone_child_idx ON milestone_achievements (child_id);