1. A method of processing an abstract query, comprising: providing a database abstraction model specifying (i) a plurality of logical fields, wherein each logical field provides an access method that maps the logical field to data associated with the logical field, and (ii) a plurality of model entities, wherein each model entity specifies an identifier in an underlying database used to identify instances of the model entity; receiving, from a requesting entity, an abstract query specifying (i) one of the plurality of model entities, (ii) a set of conditions, wherein each condition includes a logical field, a conditional operator, and a comparison value, and (iii) logical fields from the plurality of logical fields used to retrieve a set of query results that satisfy the set of conditions; retrieving an abstract record corresponding to the model entity specified by the abstract query, wherein the abstract record identifies a hierarchy of logical fields, from the plurality of logical fields, related to the model entity; determining, for each condition specified by the abstract query, whether a path exists from a root logical field of the hierarchy to a child logical field of the hierarchy matching the logical field in the condition; for each path determined to exist, associating a table of the underlying database that is mapped to by the child logical field with a table instance, each table instance including those logical fields from the abstract query that map to the table, those conditions from the set of conditions to be evaluated using data from the table; and generating an abstract query plan that includes the table instances and identifies relationships between the table instances.