PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   NESTED SETS in XML - Verketten mehrer Bäume (http://www.selfphp.de/forum/showthread.php?t=23688)

mr_sol 21.10.2010 11:44:57

NESTED SETS in XML - Verketten mehrer Bäume
 
Hallo Thomas!

Aufbauend auf:http://www.selfphp.de/forum/showthre...d=1#post138635


Das Ziel: Eine Mindmapstruktur bei welcher verschiedene Bäume miteinander verknüpft werden. Durch Einführen eines start_time bzw end_time Zeitstempel je Element sollte man die Möglichkeit haben den Verlauf des Aufbaues nachzuvollziehen. Auch die Verknüpfung selber sollte den Baum zeitlich steuern können.


Dabei soll die Verknüpfung nicht nur auf die Wurzel des Baumes zeigen sondern kann auch auf einen Teilbaum sich beziehen.

Beispiel:

Code:

Baum 1

A
B    C    H
      D
      E    F
            G


Baum 2

I
J    L      P
K    M
      N    O


Von E wird zB auf L verknüpft - Ergebnis:

A
B    C    H
      D
      E      F
        |    G
      L         
      M
      N    O


in XML

<A>
<B></B>
<C>
<D>
<E>
<L>
<M>
<N></N><O></O>
</M>
</L>
</E>
<F>
<G></G>
</F>
</D>
</C>
<H></H>
</A>


Den Teilbaum würde ich mit Teilwurzelknoten BETWEEN lft,rgt bzw starttime,endtime einschränken.

Lösungsansatz (Ein-Tabelle)
Die Tabelle mit starttime,endtime,rootid,linkid zu erweitern

Lösungsansatz (Zwei-Tabellen)

Treeabelle mit rootid
Elementabelle mit starttime,endtime
Linktabelle starttime,endtime,linkid

zu erweitern.



Was sagst DU!

thomas_w 21.10.2010 20:14:01

AW: NESTED SETS in XML - Verketten mehrer Bäume
 
Zitat:

Zitat von mr_sol (Beitrag 138636)
Was sagst DU!

Erst mal nicht so viel. Nach wie vor bin ich der Meinung, dass das Ganze auf rekursives SQL hinaus läuft je komplexer es wird.

Du könntest ja wie ein kleines Tabellen-Beispiel mit Testdaten aufbauen.

Grüße
Thomas

mr_sol 22.10.2010 08:32:01

AW: NESTED SETS in XML - Verketten mehrer Bäume
 
Hallo Thomas!

Ich habe Dir Daten für Lösungsweg 1 zusammengestellt

rootid.........ID des jeweilgen Baumes
start_time...Zeit wann Element erzeugt wurde
end_time....Zeit wann Element gelöscht wurde (2029 ist maximum)
linkid..........ID zeigt auf Startknoten des Unterbaumes
link_time.....Zeit ab wann Unterbaum angezeigt wird


Habe die Tabelle tree1 genannt
Code:

CREATE TABLE IF NOT EXISTS `tree1` (
  `id` int(11) NOT NULL,
  `tag` varchar(100) NOT NULL,
  `lft` int(11) NOT NULL,
  `rgt` int(11) NOT NULL,
  `description` text NOT NULL,
  `start_time` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `end_time` timestamp NOT NULL default '2029-01-01 00:00:00',
  `linkid` int(11) NOT NULL,
  `link_time` timestamp NOT NULL default '0000-00-00 00:00:00',
  `rootid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `tree1`
--

INSERT INTO `tree1` (`id`, `tag`, `lft`, `rgt`, `description`, `start_time`, `end_time`, `linkid`, `link_time`, `rootid`) VALUES
(1, 'A', 1, 16, 'content A', '2010-10-21 08:01:00', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(2, 'B', 2, 3, 'content B', '2010-10-21 08:01:01', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(3, 'C', 4, 13, 'content C', '2010-10-21 08:01:02', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(4, 'D', 5, 12, 'content D', '2010-10-21 08:01:03', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(5, 'E', 6, 7, 'content E', '2010-10-21 08:01:04', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(6, 'F', 8, 11, 'content F', '2010-10-21 08:01:05', '2029-01-01 00:00:00', 12, '2029-01-01 00:00:00', 1),
(7, 'G', 9, 10, 'content G', '2010-10-21 08:01:06', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(8, 'H', 14, 15, 'content H', '2010-10-21 08:01:07', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(9, 'G2', 9, 10, 'content G1', '2010-10-21 08:01:08', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(10, 'G3', 9, 10, 'content G2', '2010-10-21 08:01:09', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(11, 'C1', 4, 13, 'content C1', '2010-10-21 08:01:10', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 1),
(12, 'I', 1, 8, 'content I', '2010-10-22 08:15:26', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 2),
(13, 'J', 2, 7, 'content J', '2010-10-22 08:15:27', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 2),
(14, 'K', 3, 4, 'content K', '2010-10-22 08:16:46', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 2),
(15, 'L', 5, 6, 'content L', '2010-10-22 08:16:47', '2029-01-01 00:00:00', 0, '0000-00-00 00:00:00', 2);


Die "Lebenszeit" eines Elementes sollte einfach zum Umsetzten sein. Die Link_time
liegt immer zwischen Anfangszeit und Endzeit.


grüsse helmut

thomas_w 22.10.2010 09:51:50

AW: NESTED SETS in XML - Verketten mehrer Bäume
 
Zitat:

Zitat von mr_sol (Beitrag 138648)
Ich habe Dir Daten für Lösungsweg 1 zusammengestellt

rootid.........ID des jeweilgen Baumes
start_time...Zeit wann Element erzeugt wurde
end_time....Zeit wann Element gelöscht wurde (2029 ist maximum)
linkid..........ID zeigt auf Startknoten des Unterbaumes
link_time.....Zeit ab wann Unterbaum angezeigt wird


Habe die Tabelle tree1 genannt
[CODE]
CREATE TABLE IF NOT EXISTS `tree1` (
`id` int(11) NOT NULL,
`tag` varchar(100) NOT NULL,
`lft` int(11) NOT NULL,
`rgt` int(11) NOT NULL,
`description` text NOT NULL,
`start_time` timestamp NOT NULL default CURRENT_TIMESTAMP,
`end_time` timestamp NOT NULL default '2029-01-01 00:00:00',
`linkid` int(11) NOT NULL,
`link_time` timestamp NOT NULL default '0000-00-00 00:00:00',
`rootid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Allgemein würde ich hier keine Defaultwerte ( ..2029.. und ..0000..) vorgeben.
Wenn ein Wert nicht vorhanden ist, dann einfach auch NULL setzen oder NULL belassen. Zudem ist '0000-00-00 00:00:00' ein ungültiges Datum, auch wenn MySQL es erlaubt.


Zitat:

Zitat von mr_sol (Beitrag 138648)

Die "Lebenszeit" eines Elementes sollte einfach zum Umsetzten sein. Die Link_time
liegt immer zwischen Anfangszeit und Endzeit.

Ich denke, dass sprengt die Möglichkeiten eines freiwilligen und kostenlosen Forums wie diesem hier.

Grüße
Thomas

mr_sol 22.10.2010 11:38:20

AW: NESTED SETS in XML - Verketten mehrer Bäume
 
Hallo Thomas!

Habe Dir diesbezüglich ein Mail gesendet

grüsse helmut


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:30:29 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.