Главная страницаОбратная связьКарта сайта

БД-дерево взаимоотношений

Все это я делал раньше. Я не могу вам все это показать на развернутом примере, но я дам вам идею как сделать это. Вы должны иметь таблицу, осуществляющую взаимоотношение между людьми. Если на Peter работают Jane и Simon, вы должны иметь таблицу (RELATION) с этими двумя записями.

Master    Slave  ------- имена полей
Peter     Jane
Peter     Simon
Если George и Elisa работают на Jane, то таблица становится такой:
Master    Slave  ------- имена полей
Peter     Jane
Peter     Simon
Jane      George
Jane      Elisa
и так далее.

Если в таблице RELATION необходимо создать дерево, начинающееся на Peter, то нужно добавить к дереву главный узел (запись), где Master = Peter. Затем каждая дочерняя запись располагается ниже записи Master = Peter. После добавления дочерней записи вы сразу увидите, если ребенок имеет собственного ребенка. Ребенок становится теперь, вероятно, отцом, поэтому вы должны позиционировать таблицу RELATION к первой записи, где Master = child, и так далее, рекурсивно. Такой способ гарантирует построение правильного дерева.

Пример:


AddFather("Peter")
AddChild("Peter", 1)

procedure AddFather(Name: string)
begin
  Tree.Add(Name);
end;

procedure AddChildr(Name: string, Index: Integer)
begin
  Relation.FindKey([Name])
  while RelationMaster.AsString = Name do
  begin
    Tree.AddChild(Index, RelationSlave.AsString);
    AddChild(RelationSlave.AsString, Tree.ItemsCount);
    Relation.Next;
  end;
end;

По-моему, ошибок нет.


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "БД-дерево взаимоотношений", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info