Complex Member Relationships

Providers can 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, only one 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.