1. A computer-implemented method comprising: receiving a query related to data stored in a database that is implemented in computer memory and that includes multiple different tables, where individual ones of the tables include values for attributes of data stored in the database; based on the received query, identifying attributes of data stored in the database that are relevant to generating a response to the received query; accessing information that is indicative of attributes for which values are included in the different tables included in the database; identifying tables included in the database that include values for the attributes identified as being relevant to generating a response to the received query based on having accessed the information indicative of the attributes for which values are included in the different tables included in the database includes: selecting a first attribute from among the attributes identified as being relevant to generating a response to the received query, based on having accessed the information indicative of the attributes for which values are included in the different tables included in the database, identifying a first table included in the database that includes values for the first attribute, selecting a second attribute from among the attributes identified as being relevant to generating a response to the received query, where the second attribute is different from the first attribute and values for the second attribute are not included in the first table, and based on having accessed the information indicative of the attributes for which values are included in the different tables included in the database, identifying a second table included in the database that includes values for the second attribute includes: identifying a second table included in the database that includes values for the second attribute that cannot be joined directly to the first table, and based on having accessed the information indicative of the attributes for which values are included in the different tables included in the database, identifying at least one intermediate table for joining the second table to the first table from among the tables included in the database; and joining tables included in the database identified as including values for attributes identified as being relevant to generating a response to the received query to create, within computer memory, a new table that reflects relationships between values of attributes identified as being relevant to generating a response to the received query includes joining the first and second tables to create a new table that reflects relationships between values of the first attribute and values of the second attribute includes: joining the at least one intermediate table to the first table to create an intermediary table, and joining the second table to the intermediary table to create the new table that reflects relationships between values of the first attribute and values of the second attribute.