Вы могли бы построить то, что Кимбалл называет таблицей помощников иерархии.
Скажем, ваша иерархия выглядит следующим образом: A -> B | B -> C | C -> D
вы бы вставили записи в таблицу, которая выглядит следующим образом
ParentID, ChildID, Depth, Highest Flag, Lowest Flag
A, A, 0, Y, N
A, B, 1, N, N
A, C, 2, N, N
A, D, 3, N, Y
B, B, 0, N, N
B, C, 1, N, N
B, D, 2, N, Y
C, C, 0, N, N
C, D, 1, N, Y
D, D, 0. N, Y
Я думаю, что правильно ... в любом случае. Дело в том, что вы по-прежнему правильно храните иерархию, вы просто строите эту таблицу из своей правильной таблицы. Эта таблица запрашивает, как банши. Скажем, вы хотите знать, каковы все первые уровни ниже B.
WHERE parentID = 'B' and Depth = 1