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: Ссылка
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.
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.
Ich kann mir einige Wege vorstellen, wie Sie das strukturieren könnten, aber nichts würde das Offensichtliche übertreffen:
Verwenden Sie das eigentliche Dateisystem.
Ich kann mir einige Wege vorstellen, wie Sie das strukturieren könnten, aber nichts würde das Offensichtliche übertreffen:
Verwenden Sie das eigentliche Dateisystem.
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.
Ich würde versuchen, eine Art Baumstruktur
zu verwendenIch 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.
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: Ссылка
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.
Sie können m-way tree Datenstruktur
verwendenDas 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.
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.
Tags und Links directory data-structures directory-structure