"Алексей Вишняков" <[EMAIL PROTECTED]> сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
Вы не могли бы развернуть ответ, пожалуйста?

Любой способ хранения дерва, базирующийся на ссылках так или иначе может порождать рекурсию. Причём тут особо не важно ссылается родитель на детей или наоборот или и то и другое сразу. Для того чтобы дерево не содержало рекурсию нужно отказаться от ссылок. Методов тут масса, но у всех есть недостатки связанные со скоростью, сложностью обработки и т.д.
Самое простое - хранить маршрут для каждого нода.
Например самый тупой:
Ключ
   ID INTEGER,
   PARPATH VARCHAR,
храним типа так

ID    PARAPATH
1      ''
2      '1'
3      '1'
4      '1.2'
5      '1.2.4'
....
14    '10.2.7.1345.67 '

Тут циклов уже не будет, но зато сложно организовать целостность - могут появится мусорные записи, реально в дереве не находящиеся. Методов хранения путей тоже много. Для некторых можно и ссылочную целостность организовать.

Ответить