Ordnerstruktur in Datenbank

10/12/2007 - 21:33 von Michael Stum | Report spam
Hallo,

ich stehe leider gerade etwas auf dem Schlauch.
Gegeben ist eine einfache Datenbank mit 2 Tabellen, Order und Dokumente.
Die "Ordner"-Tabelle bildet eine Ordnerstruktur ab:

OrdnerID OrdnerName OrdnerParent
GUID Titel GUID

Jeder Ordner hat also eine GUID, und ggf. einen Parent-Ordner, der per
GUID verknüpft ist.

Die Zweite Tabelle, Dokumente ist àhnlich einfach:
DokumentID DokumentName DokumentPfad DokumentOrdner
GUID Titel d:\test.jpg GUID

Wichtig ist hier nur, das DokumentOrdner mit der OrdnerID der Tabelle
verbunden ist, also eine Relation vorliegt.

Soweit ist das alles ja recht klar, aber ich verstehe gerade nicht, wie
ich die Ordner in ein TreeView reinbekommen soll.

Mein erster Ansatz: SELECT OrdnerID, OrdnerName, OrdnerParent FROM Order;
und dann per for..in Schleife die Daten in ein
Dictionary<string,TreeNode> einlesen. Dabei ist mein Problem dummerweise
das die Ordner ja nicht zwingend geordnet sind. Im schlimmsten Fall kann
es passieren, das ich einen Ordner habe, obwohl ich den Parentordner
noch gar nicht habe weil der weiter unten steht und ich den Parent im
Dictionary dann natürlich nicht finde.

Kann mir gerade mal jemand das Brett vorm kopf entfernen und einige
Tipps geben wie ich hier vorgehen will, wenn ich eben eine solche
Struktur in einem Baum abbilden will?
 

Lesen sie die antworten

#1 Michael Stum
10/12/2007 - 21:42 | Warnen spam
Michael Stum schrieb:
Mein erster Ansatz: SELECT OrdnerID, OrdnerName, OrdnerParent FROM Order;
und dann per for..in Schleife die Daten in ein
Dictionary<string,TreeNode> einlesen.



Oder ganz anders gefragt: Geht das überhaupt mit einem einzelnen SQL
Query? Der funktionierende Ansatz wàre ja, rekursiv SQL Queries zu
machen, also erst die ordner ohne Parent zu holen und dann für jeden von
den Ordner ein separates SQL Query (WHERE OrdnerParent = aktuelleGUID)
zu machen und dann immer so weiter.

Das ginge und wàre auch Geschwindigkeitsmàßig nicht soo das Problem weil
es eine relativ kleine Datenbank ist und bleibt, aber wenn es mit einem
Query ginge wàre das besser.

Ähnliche fragen