Jeg implementerede det ved hjælp af to kolonner. Jeg forenkler det her lidt, fordi jeg var nødt til at beholde tagnavnet i et separat felt/tabel, fordi jeg var nødt til at lokalisere det til forskellige sprog:
- tag
- sti
Se for eksempel på disse rækker:
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/
osv.
Brug af like
operatør på stifeltet kan du nemt få alle nødvendige tag-rækker:
SELECT * FROM tags WHERE path LIKE 'database/%'
Der er nogle implementeringsdetaljer som når du flytter en node i hierarkiet, skal du også ændre alle børn osv., men det er ikke svært.
Sørg også for, at længden af din sti er lang nok - i mit tilfælde brugte jeg ikke tagnavnet for stien, men et andet felt for at sikre, at jeg ikke får for lange stier.