When a database has a dependency table showing the parent-child relationship of items...I've mostly seen guides that assume the top level parent has a "parent id" field which is either zero or null, and this is the indicator that this item is a top level item aka the root of the dependency tree.
This is what I'm seeing used in a recursive CTE as the anchor member.
However, it seems that requiring this zero or null field might be unnecessary, since the parent item can be deduced by seeing that a given item number appears in the dependency table as a "parent id" but never as a "child id".
Example of deducing item 300 as the root parent of the 300-330 tree:
Dependency table| Parent_id | child_id ||--------- | ----------|| 300 | 310 || 310 | 320 | | 320 | 330 |
Example of the (far more common in examples) use of parent_id = 0 to define the root parent:
Dependency table
| Parent_id | child_id || -------- | -------------- || 0 | 300 || 300 | 310 || 310 | 320 | | 320 | 330 |
so the question here is one of "best practices". If I have the ability to design a dependency table from the ground up, is there a reason to go with on structure vs the other?