В моем приложении базы данных Delphi 2007 у меня есть список поколений.Каждое поколение имеет список шаблонов ценообразования, каждый из которых представляет собой набор значений.В приложении пользователь может создать позицию и назначить шаблон ценообразования из любого поколения.Новое поколение создается путем клонирования существующего поколения.Таким образом, пользователю нужно только создать первое поколение, затем клонировать его и изменить только необходимые значения шаблонов цен в новом поколении.Эти поколения (и шаблоны ценообразования) связаны посредством originids.ie, originid Generation1 будет равен нулю, а generation2 будет иметь originid, указывающий на идентификатор generation1 'и т. Д. Кроме того, пользователь может создать новое поколение из любого из существующих .ie, generation3'sпроисхождение может быть поколение1.Теперь пользователь хочет обновить функциональность, где пользователь может обновить шаблоны ценообразования от поколения к любому другому поколению, если они «связаны».т. е. если они связаны по идентификаторам источника (необязательно прямым подключением .ie), если идентификатор источника исходного поколения указывает непосредственно на идентификатор цели или любого из прямых потомков цели или любого из потомков потомков цели..так далее).Пожалуйста, смотрите описание ниже.
Каков наилучший способ поиска (алгоритм / структура данных) цели из источника в этом случае?
Спасибо всем заранее,
Pradeep
GenerationName --Id - OriginID
Поколение 1 - 100-- 0
Поколение2 - 101 - 100 (клонировано из 1)
поколение 3 - 102 - 100 (клонировано из 1)
поколение 4 - 103 - 102 (клонировано из 3)
поколение 5 --104 - 101 (клонировано из 2)
Здесь пользователь может выполнить обновление с поколения 1 до поколения 3 (поколение 1 поколение 3 ) или поколения 4 (поколение 1 ene поколение 3 поколение 4) илиПоколение 5 ((Поколение 1 - Поколение 2 - Поколение 5), потому что они связаны. Но Поколение 3 - поколение 5 не допускается, потому что между ними нет связи.