Complex Member Relationships

Several providers allow member relationships that are not strict trees. They are directed acyclic graphs (DAGs). For such providers, a member can have multiple parents. The column PARENT_COUNT gives the number of parents in such a case.

When member relationships form a DAG, each link between a member and its parent is represented as a separate row in the members rowset. Therefore, the MEMBER_UNIQUE_NAME value is not the primary key of the members rowset. Rather, it is the combination of MEMBER_UNIQUE_NAME and PARENT_UNIQUE_NAME that is the primary key.

Among the multiple parents, there is one that is the “real” parent (that is, it represents the preferred rollup path). The others are “step” parents. Conversely, a parent has “real” children and “step” children. The tree operators for ancestors, descendants, parent, and children all follow the “real” links and not the “step” links.