If you want to split the DMA's along the state borders you can do something like that:
CREATE SEQUENCE polyseq_1;
CREATE TABLE boundaries AS
SELECT
nextval('polyseq_1') AS id,
b.name as state_name,
a.dma_1 as dma_1,
CASE
WHEN ST_Within(a.geom,b.geom)
THEN a.geom
ELSE ST_Multi(ST_Intersection(a.geom,b.geom))
END AS geom
FROM tl_2015_us_state_4326 b
JOIN dma_boundary a
ON ST_Intersects(a.geom, b.geom);
before:

after:

Useful links:
PostGIS Union Between Two Tables, Preserving Attributes
Acquiring ArcGIS-like speed in Postgis
Update1:
As answer to the comment below (..."white blanks in some parts of the map"...)
You can also filter your result as a next step to get only Polygons back. With this specific datasets here there are also some points generated that seem to make problems:
create table boundaries_polygons as
SELECT *
FROM (SELECT id, state_name, dma_1, (ST_Dump(b.geom)).geom
from boundaries b) as temp
WHERE ST_GeometryType(temp.geom) = 'ST_Polygon'
;
before filtering(extracted single geometries):

after filtering:

create table boundaries as select nextval('polyseq_1') as id, b.name as state_name, a.dma_1 as dma_1, case when ST_Within(a.geom, b.geom) then a.geom else st_multi(st_intersection(a.geom,b.geom)) end as geom from us_states b join us_dma a on st_intersects(a.geom, b.geom);Any thoughts? – Minh Oct 05 '15 at 14:48dma_1and Alabama forstate_name. Is there a way to join them all together into one geometry? – Minh Oct 16 '15 at 16:34