1. A method for building an optimal group of cubes based upon historical queries to a database for answering a greatest number of future queries from a database, comprising the steps of: identifying a set of grouping patterns in accordance with a plurality of historical queries to the database for grouping components of the historical queries; defining one or more constraints to be applied to the set of grouping patterns, the one or more constraints being selected so as to optimize one or more parameters associated with the answering of a future query; determining an optimal set of grouping patterns in accordance with the defined constraints, each grouping pattern comprising a multi-dimensional database; wherein the determining of the optimal set of grouping patterns further comprises iterating the steps of: determining a plurality of grouping patterns or combined cubes in accordance with the plurality of historical queries and one or more knowledge modeling constructs defining a schema for data stored within the database; combining two or more of the plurality of grouping patterns or combined cubes that are determined to provide overlapping components so that, when combined into a larger combined cube, allow for a larger percentage of the historical queries to be answered in accordance with the defined constraints in a more efficient manner; and removing one or more the plurality of grouping patterns or combined cubes that comprise a completely defined subset of the larger combined cube in accordance with a plurality of overlapping components; and wherein the steps for creating the cubes are iterated until an optimal set of combined cubes is generated able to answer a greatest percentage of historical questions.