"Алексей Вишняков" <[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 '
Тут циклов уже не будет, но зато сложно организовать целостность - могут
появится мусорные записи, реально в дереве не находящиеся.
Методов хранения путей тоже много. Для некторых можно и ссылочную
целостность организовать.