Implementoval jsem to pomocí dvou sloupců. Zde to trochu zjednoduším, protože jsem musel ponechat název značky v samostatném poli/tabulce, protože jsem jej musel lokalizovat do různých jazyků:
- tag
- cesta
Podívejte se například na tyto řádky:
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/
atd.
Pomocí like
operátor v poli cesty můžete snadno získat všechny potřebné řádky značek:
SELECT * FROM tags WHERE path LIKE 'database/%'
Existují určité detaily implementace, jako když přesunete uzel v hierarchii, musíte také změnit všechny potomky atd., ale není to těžké.
Ujistěte se také, že délka vaší cesty je dostatečně dlouhá – v mém případě jsem pro cestu nepoužil název značky, ale jiné pole, abych se ujistil, že nedostanu příliš dlouhé cesty.