Basis for sets



Given a set of sets S, what is the minimal set of disjoint sets D such that
each of the original sets is a union of elements of D?

For example, if S = { {a,b,c,d,e}, {a,c}, {c,f,g} }, then D = { {a}, {c},
{f, g}, {b,d,e} }.

What is the name of this problem?

The obvious way to solve it is to calculate the full lattice of
intersections and set differences, but the straightforward way of doing
that seems computationally expensive. What are good algorithms for this
problem?

               -s