Datenstruktur für die Verzeichnisstruktur verwendet?

8

Ich mache ein Programm, das der Benutzer Verzeichnisse (nicht in Windows, in meiner App) erstellen und in diesen Ordnern gibt es Unterordner und so weiter; Jeder Ordner muss entweder Ordner oder Dokumente enthalten. Was ist die beste zu verwendende Datenstruktur? Beachten Sie, dass der Benutzer einen Unterordner auswählen und nach Dokumenten darin und in seinen Unterordnern suchen kann. Und ich möchte nicht die Ordner oder Unterordner Ebenen begrenzen.

    
Salameh 01.11.2008, 17:28
quelle

7 Antworten

11

Das mache ich:

Jeder Datensatz in der Datenbank hat zwei Felder: ID und ParentID. IDs sind 4-5 Zeichen (Base36, a-z: 0-9 oder etwas ähnliches). Eltern-IDs sind eine Verkettung der vollständigen Struktur des Elternteils ...

Also ...

Diese Struktur:

%Vor%

Würde so dargestellt:

%Vor%

Ich mag diese Struktur, denn wenn ich alle Dateien unter einem Ordner finden muss, kann ich eine Abfrage machen wie:

%Vor%

So löschen Sie einen Ordner und alle untergeordneten Objekte:

%Vor%

Um einen Ordner und seine untergeordneten Elemente zu verschieben, müssen Sie alle Datensätze, die dasselbe übergeordnete Element verwenden, auf das neue übergeordnete Element aktualisieren.

  

Und ich möchte nicht die Ordner oder die Ebenen der Unterordner eingrenzen

Eine offensichtliche Einschränkung besteht darin, dass die Anzahl der Unterordner auf die Größe Ihres ParentID-Felds beschränkt ist.

    
Jason 01.11.2008, 17:44
quelle
8

Ich kann mir einige Wege vorstellen, wie Sie das strukturieren könnten, aber nichts würde das Offensichtliche übertreffen:

Verwenden Sie das eigentliche Dateisystem.

    
Ali Afshar 01.11.2008 17:39
quelle
5

Ich würde versuchen, eine Art Baumstruktur

zu verwenden     
Cameron 01.11.2008 17:50
quelle
1
___ answer255828 ___

Ich kann mir einige Wege vorstellen, wie Sie das strukturieren könnten, aber nichts würde das Offensichtliche übertreffen:

Verwenden Sie das eigentliche Dateisystem.

    
___ qstnhdr ___ Datenstruktur für die Verzeichnisstruktur verwendet? ___ qstntxt ___

Ich mache ein Programm, das der Benutzer Verzeichnisse (nicht in Windows, in meiner App) erstellen und in diesen Ordnern gibt es Unterordner und so weiter; Jeder Ordner muss entweder Ordner oder Dokumente enthalten. Was ist die beste zu verwendende Datenstruktur? Beachten Sie, dass der Benutzer einen Unterordner auswählen und nach Dokumenten darin und in seinen Unterordnern suchen kann. Und ich möchte nicht die Ordner oder Unterordner Ebenen begrenzen.

    
___ answer255851 ___

Ich würde versuchen, eine Art Baumstruktur

zu verwenden     
___ answer256012 ___

Ich weiß, dass die Frage speziell nach einer Datenstruktur fragt, aber ...

Wenn Sie eine objektorientierte Sprache verwenden, können Sie vielleicht das zusammengesetzte Entwurfsmuster verwenden, das für diese Art hierarchischer baumartiger Strukturen ideal geeignet ist. Sie bekommen, wonach Sie fragen.

    
___ antwort19421946 ___

Ich sollte B + Baum empfehlen. Sie können Indexierung (Seite, Ordner usw.) und alle einfach verwenden.

B + Baum http://commons.wikimedia.org/wiki/File:Btree.png

für weitere Informationen: Ссылка

    
___ tag123directory ___ Ein Verzeichnis oder Ordner ist ein virtueller Container innerhalb eines digitalen Dateisystems, in dem Gruppen von Computerdateien und anderen Verzeichnissen aufbewahrt und organisiert werden können. ___ answer256032 ___

Die meisten OO-Sprachen enthalten eine Art Abstraktion für das Dateisystem, also würde ich dort anfangen. Unterlasse es dann, wenn es nötig ist.

Ich würde Verzeichnisse als ein Array von Objekten erwarten, die zum Beispiel Verzeichnisse oder Dateien sind.

    
___ tag123datastrukturen ___ Eine Datenstruktur ist eine Möglichkeit, Daten so zu organisieren, dass bestimmte Eigenschaften dieser Daten effizient abgefragt und / oder aktualisiert werden können. ___ answer2568242 ___

Sie können m-way tree Datenstruktur

verwenden     
___ tag123directorystructure ___ Fragen, die sich auf die Organisation von Dateien und Verzeichnissen in einem Dateisystem beziehen. ___ answer255841 ___

Das mache ich:

Jeder Datensatz in der Datenbank hat zwei Felder: ID und ParentID. IDs sind 4-5 Zeichen (Base36, a-z: 0-9 oder etwas ähnliches). Eltern-IDs sind eine Verkettung der vollständigen Struktur des Elternteils ...

Also ...

Diese Struktur:

%Vor%

Würde so dargestellt:

%Vor%

Ich mag diese Struktur, denn wenn ich alle Dateien unter einem Ordner finden muss, kann ich eine Abfrage machen wie:

%Vor%

So löschen Sie einen Ordner und alle untergeordneten Objekte:

%Vor%

Um einen Ordner und seine untergeordneten Elemente zu verschieben, müssen Sie alle Datensätze, die dasselbe übergeordnete Element verwenden, auf das neue übergeordnete Element aktualisieren.

  

Und ich möchte nicht die Ordner oder die Ebenen der Unterordner eingrenzen

Eine offensichtliche Einschränkung besteht darin, dass die Anzahl der Unterordner auf die Größe Ihres ParentID-Felds beschränkt ist.

    
___
The Hun 17.10.2013 08:42
quelle
0

Ich weiß, dass die Frage speziell nach einer Datenstruktur fragt, aber ...

Wenn Sie eine objektorientierte Sprache verwenden, können Sie vielleicht das zusammengesetzte Entwurfsmuster verwenden, das für diese Art hierarchischer baumartiger Strukturen ideal geeignet ist. Sie bekommen, wonach Sie fragen.

    
Vincent Ramdhanie 01.11.2008 19:47
quelle
0

Die meisten OO-Sprachen enthalten eine Art Abstraktion für das Dateisystem, also würde ich dort anfangen. Unterlasse es dann, wenn es nötig ist.

Ich würde Verzeichnisse als ein Array von Objekten erwarten, die zum Beispiel Verzeichnisse oder Dateien sind.

    
dkretz 01.11.2008 20:01
quelle
0

Sie können m-way tree Datenstruktur

verwenden     
rohit 02.04.2010 17:51
quelle