Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
ВнизГрафы и Referential Integrity Найти похожие ветки
← →
OneOfTheFew (2003-02-18 16:54) [0]Любителям гимнастики для ума!!!
Графы и Referential Integrity:
Есть матрица M размерностью NxN,описавающая возможные взаимоотношения между элементами (A,B,C,D,E,F,G) - пусть эти элементы - файлы Paradox,связанные ссылочной целостностью :
Если элемент M[x,y]="*" - это значит, что M[X,0] является
"master" для M[Y,0].
Случай M[x,y]="*", где x=y не рассматриваем.
ABCDEFG
A
B*
C**
D *
E *
F
Другое представление:
A->B
B->С
С->(terminal)
D->E
E->(terminal)
F->(terminal)
G->D
Надо "пройти" матрицу M и составить порядок удаления данных из таблиц.
Ногами просьба не бить :)))
← →
DarkGreen (2003-02-18 17:41) [1]В свойствах ссылочной целостности вместо Restriсt поставь Cascade. И будет оно у тебя спокойно удаляться в любом порядке
;-)
← →
OneOfTheFew (2003-02-18 17:58) [2]2 Dark Green
Спасибо, попробую!
← →
OneOfTheFew (2003-02-18 18:07) [3]2 Dark Green
Слушай, чего то не проходит Твой вариант :-(
← →
DarkGreen (2003-02-19 05:34) [4]Странно :-/
Ну тогда так:
function dddd(K, L: integer);
begin
for I := k to n do
begin
for J := l to n do
begin
if MyArray[I, J]="*" then
dddd(I, J);
end;
delete from Table[I, 0]
end;
end;
.........
dddd(1, 0)
.........
Если не ошибаюсь :-)
← →
DarkGreen (2003-02-19 06:23) [5]Опс, сорри, затупил откровенно. Так правильнее
var
MyArray: array[0..N, 0..N + 1] of Integer;
Deleted: array[0..N] of Boolean;
function dddd(K, L: integer);
begin
for I := k to n + 1 do
begin
for J := l to n do
if (MyArray[I, J]="*") and (I <> J) and not deleted[J] then
dddd(J, 0);
deleted[I] := True;
delete from Table[I] //Каким-то образом удаляем данные
end;
end;
..........
Инициализация массивов и т.д.
..........
dddd(1, 0)
..........
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c