Zaimplementowałem to za pomocą dwóch kolumn. Upraszczam to trochę tutaj, ponieważ musiałem trzymać nazwę tagu w osobnym polu/tabeli, ponieważ musiałem ją zlokalizować dla różnych języków:
- znacznik
- ścieżka
Spójrz na te wiersze na przykład:
tag path
--- ----
database database/
mysql database/mysql/
mysql4 database/mysql/mysql4/
mysql4-1 database/mysql/mysql4-1/
oracle database/oracle/
sqlserver database/sqlserver/
sqlserver2005 database/sqlserver/sqlserver2005/
sqlserver2005 database/sqlserver/sqlserver2008/
itp.
Korzystanie z like
operatora w polu ścieżki, możesz łatwo uzyskać wszystkie potrzebne wiersze tagów:
SELECT * FROM tags WHERE path LIKE 'database/%'
Istnieje kilka szczegółów implementacji, na przykład, gdy przenosisz węzeł w hierarchii, musisz również zmienić wszystkie dzieci itp., ale nie jest to trudne.
Upewnij się również, że długość Twojej ścieżki jest wystarczająco długa - w moim przypadku nie użyłem nazwy tagu ścieżki, ale innego pola, aby upewnić się, że nie dostanę zbyt długich ścieżek.