1. A non-transitory computer readable storage medium, comprising executable instructions to: specify a set of database tables defining vertices and database joins defining oriented edges to form a graph, wherein the oriented edges specify directionality characterizing dependent relationships between the database tables; identify a query path in the graph; split the graph into a set of directed acyclic graphs, wherein each directed acyclic graph has a single root vertex that does not form a path to itself through oriented edges; remove all selected oriented edges from each directed acyclic graph to form a tree corresponding to each directed acyclic graph, wherein the tree is a sub-graph of one of the set of directed acyclic graphs without loops and one list of joins relates any two database tables in the tree, wherein the removing comprises identifying a simple cycle in the one of the set of directed acyclic graphs that contains only one fan trap and one source, wherein a fan trap is a vertex with two incoming edges, wherein at least a portion of the removed selected oriented edges are within the simple cycle; wherein the simple cycle is identified in the directed acyclic graph by: selecting any edge in the query path and removing such selected edge from the query path; determining that there is a cycle C if there is one other non-oriented path between ends of the selected edge; and determining that there is not a cycle if there is not one other non-oriented path between the ends of the selected edge, wherein when the determined cycle C comprises more than one fan trap and one source: selecting one of the fan traps F having a smallest distance to a root, identifying its two surrounding sources S and T, finding a path P between S and T that does not contain a common descendant, and connecting path P with the path that relates S to F and T in cycle C to yield a new cycle C′, wherein the new cycle C′ is the simple cycle; generate a database query for each tree; apply each database query for each tree to the database tables that correspond to the vertices in the tree to form query results; and display the query results.