Есть иерархия компании с сотрудниками в базе данных.
Каждый день некое приложение берет из файла данные в таком же по сути виде, просто плоские и надо обновить структуру в базе не удалением вставкой, а только где есть изменения.
Новые добавить\удалить иза базы, изменения применить. Какие есть эффективные алгоритмы получения дифа между деревьями?
Вид данных. То есть иерархия может быть с разными уровнями вложенности
Отдел 1
Сотрудник А
Отдел 2
Сотрудник Б
Отдел 3
Сотрудник В
Отдел 4
Сотрудник Г
Отдел 5
Сотрудник Д
Здравствуйте, merge, Вы писали:
M>Есть иерархия компании с сотрудниками в базе данных.
M>Каждый день некое приложение берет из файла данные в таком же по сути виде, просто плоские и надо обновить структуру в базе не удалением вставкой, а только где есть изменения.
M>Новые добавить\удалить иза базы, изменения применить. Какие есть эффективные алгоритмы получения дифа между деревьями?
Всё зависит от того, как представлены деревья.
M>Вид данных. То есть иерархия может быть с разными уровнями вложенности
Отдел 1
Сотрудник А
Отдел 2
Сотрудник Б
Отдел 3
Сотрудник В
Отдел 4
Сотрудник Г
Отдел 5
Сотрудник Д
Если дерево представлено в классическом реляционном виде, то всё просто:
Departments
Employees
Берём просто
разницу между таблицами, не думая о деревьях. Вычисляется за O(N), эффективнее некуда (если у вас не хранится история изменений).