A global Data warehouse (DW) integrates data from multi- ple distributed heterogeneous databases and other information sources. A global DW can be abstractly seen as a set of materialized views. The selection of views for materialization in a DW is an important decision in the implementation of a DW. Current commercial products do not provide tools for automatic DW design. In this paper we provide a generic method that, given a set of SPJ- queries to be satisfied by the DW, generates all the 'significant' sets of materialized views that satisfy all the input queries. This process is complex since 'common subexpressions' between the queries need to be detected and exploited. Our method is then applied to solve the problem of selecting such a materialized view set that fits in the space allocated to the DW for materialization and minimizes the combined overall query evaluation and view maintenance cost. We design algorithms which are implemented and we report on their experimental evaluation.