In den letzten Tagen habe ich ein wenig an einer neuen Anwendung programmiert. Teil davon ist ein Baum in dem eine Hierarchie von Tags abgebildet ist und eine Liste mit Dateien, denen man n Tags zuweisen kann. Nach Dateien soll man über diese Tag-Hierarchie suchen können. Da sich nach einer anfänglichen Konfiguration die Tag-Hierarchie nicht mehr großartig ändert, habe ich mich für das Nested-Set Datenmodell zum Speichern in der Datenbank entschieden.

Die Tabellenstruktur des Baums, der Dateien und der Zuordnungstabelle sieht in etwa so aus:

Nodes { id, lft, rgt, parentId }
FileNodes { id, nodeId, fileId }
Files { id, name }

Im Tag-Baum will ich neben dem Namen des Tags auch die Anzahl der Dateien anzeigen, denen dieser Tag zugeordnet ist. Dabei dürfen natürlich Dateien in der Hierarchie nicht doppelt gezählt werden. Mit diesem Beispiel hier würde ich also für die Knoten folgendes Ergebnis bekommen ([Knoten]: Anzahl):
[1]: 5, [2]: 4, [3]: 3, [4]: 1, [5]: 2, [6]: 2

Continue reading