A Data Warehouse (DW) is a database that collects and stores data from multiple remote and heterogeneous information sources. When a query is posed, it is evaluated locally, without accessing the original information sources. In this paper we deal with the issue of designing a DW, in the context of the relational model, by selecting a set of views to materialize in it. Views allow to compute both the schema and the instance of the DW from the schemas and the instances of the source relations. We briefly present a theoretical framework for the DW design problem, which concerns the selection of a set of views that (a) fits in the space allocated to the DW, (b) answers all the queries of interest, and (c) minimizes the total query evaluation and view maintenance cost. We then formalize it as a state space search problem by taking into account multiquery optimization over the maintenance queries (i.e. queries that compute changes to the materialized views) and the use of auxiliary views for reducing the view maintenance cost. Finally, incremental algorithms and heuristics for pruning the search space are presented.