2012-04-14 8 views
0

Ich muss ein "virtuelles Dateisystem" in MySql machen (mit asp.net als Web-Anwendung). Es wird nicht sehr komplex, wahrscheinlich maximal 2-3 Unterordner "tief", mit vielleicht bis zu 10 Dateien in jedem Ordner. Jeder Benutzer hat nach der Anmeldung eigene Ordner und Dateien. Der/die Administrator (en) sollten in der Lage sein, "Vorlagen" zu erstellen und neuen Benutzern eine Vorlage zuzuweisen. Eine Vorlage enthält einige Ordner und Dateien. Und daran kratze ich mich am Kopf. Ich denke, ich bin zumindest kurz davor, die Tische zu entwerfen, aber ich bin mir nicht sicher. Hier sind die Tabellen, die ich bisher erstellt habe:Virtuelles Ordnersystem in MySql, mit "Templates"

Files 
ID 
Name 
ContentType 
FileDataSize 
FileData 
Parent_Folder_ID 

Folders 
ID 
Name 
Parent_Folder_ID 

Users 
ID 
Name 
Email 
Password 

Templates 
ID 
Name 

User_Templates 
User_ID 
Template_ID 

Bin ich auf dem richtigen Weg hier? Oder fehlt mir etwas?

+0

Ich denke, ich würde [verschachtelte Sets] (http://en.wikipedia.org/wiki/Nested_set_model) für die Ordnerhierarchie verwenden. Adjazenzlisten funktionieren, sind aber aufgrund der Rekursionsnotwendigkeit schmerzhaft. Sie scheinen eine Zuordnungstabelle für die Verknüpfung von Benutzern mit Ordnern zu fehlen. – nnichols

Antwort

1

Das sieht ziemlich einfach aus, und das wird wahrscheinlich nur für Ihre Zwecke funktionieren. Das einzige Problem, auf das Sie stoßen werden, ist, dass Sie mehrere Abfragen benötigen, um den vollständigen Pfad für einen Blattknoten zu bestimmen.

Der einfachste Weg, dies zu lösen, ist tatsächlich in einer separaten Spalte den vollständigen Pfad zu speichern, wie zum Beispiel:

folder1/folder2/node

nicht so schön, aber sicherlich die absolute einfachste zu tun mit.

Alternativ können Sie den Preorder Tree Traversal-Algorithmus verwenden, aber das kann komplexer sein, und während das Abrufen von Sub-Tree's schnell ist, können Updates unglaublich langsam sein.

+0

Sie beabsichtigen, eine "FullPath" -Spalte der Tabelle "Ordner" hinzuzufügen? –

+0

Nun ja .. aber probieren Sie es aus? Welche Abfragen benötigen Sie? Sobald Sie die Abfragen schreiben, werden Sie schnell herausfinden, was fehlt und was schwierig ist. – Evert

+0

Ja, ich werde es ausprobieren. Danke für den Tipp Evert :-) –