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

Советы » Компоненты и Базы данных » БД-дерево взаимоотношений

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

;

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

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com