Figure 1. Control DataSet Changes
You can run into problems when committing DataSet changes in complex database situations. Get a grip on this complexity by graphing your DataSets in structures like these. Acyclic graphs have no path that forms a closed loop (unlike the loop shown in red in the cyclic graph). Hierarchical graphs are a special type of acyclic graphs, in which all nodes have only one parent, except for the root node, which has no parent. You usually encounter hierarchical DataSet structures in applications. However, you might encounter acyclic graphs when you add "knowledge level" entities (such as customers, products, and cities) to an "operational-level" hierarchical structure (such as a nested order-OrderDetails DataSet). However, it's usually better to keep operation and knowledge entities separate, using ad-hoc lookups to jump from "operation-level" entities to "knowledge-level" entities.