Ik heb het geïmplementeerd met behulp van twee kolommen. Ik vereenvoudig het hier een beetje, omdat ik de tagnaam in een apart veld/tabel moest houden omdat ik het voor verschillende talen moest lokaliseren:
- tag
- pad
Kijk bijvoorbeeld naar deze rijen:
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/
enz.
De like
. gebruiken operator op het padveld kunt u gemakkelijk alle benodigde tagrijen krijgen:
SELECT * FROM tags WHERE path LIKE 'database/%'
Er zijn enkele implementatiedetails, zoals wanneer u een knooppunt in de hiërarchie verplaatst, u ook alle onderliggende elementen moet wijzigen, enz., maar het is niet moeilijk.
Zorg er ook voor dat de lengte van je pad lang genoeg is - in mijn geval heb ik niet de tagnaam voor het pad gebruikt, maar een ander veld om ervoor te zorgen dat ik niet te lange paden krijg.