The vector dependency tree representation below is induced by (manually) eliding edges from the foreign key dependency graph for the dbms relations, according to four cases:
The third step is not only a significant optimization, as it reduces dbms load, but also necessary for correctness, since the table provided for vector lookup during the post-order traversal does not include the functional tables, so that there would be an index-out-of-range error if edges for those tables were included.
The last step, though at most a minor optimization, is actually more a matter of convenience, as fewer edges need to be added to the adjacency lists below.
Note that the initial - and resulting - dependency graph *includes* the union-join edges for the variant parts of Contract (e.g., FutDetail) and SubRequest (e.g., PastFilter), even though these foreign key dependencies are not explicitly declared via the sql create table statements.
See the foreign.* files in ../dot for a graphical representation of the dbms foreign key dependency graph. Union-join (tagged variant key) edges are indicated there by dashed-line edges.
Bill Pippin 2010-01-14