Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Базы Данных

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

Все это я делал раньше. Я не могу вам все это показать на развернутом примере, но я дам вам идею как сделать это. Вы должны иметь таблицу, осуществляющую взаимоотношение между людьми. Если на 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;

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

Категория: Базы Данных | Добавил: DelphiAiX (20.05.2012)
Просмотров: 568 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]