Saya menerapkannya menggunakan dua kolom. Saya menyederhanakannya di sini sedikit, karena saya harus menyimpan nama tag di bidang/tabel terpisah karena saya harus melokalkannya untuk bahasa yang berbeda:
- tag
- jalan
Lihat baris ini misalnya:
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/
dll.
Menggunakan like
operator di bidang jalur Anda dapat dengan mudah mendapatkan semua baris tag yang diperlukan:
SELECT * FROM tags WHERE path LIKE 'database/%'
Ada beberapa detail implementasi seperti ketika Anda memindahkan sebuah node dalam hierarki, Anda juga harus mengubah semua turunan, dll., tetapi itu tidak sulit.
Pastikan juga panjang jalur Anda cukup panjang - dalam kasus saya, saya tidak menggunakan nama tag untuk jalur tersebut, tetapi bidang lain untuk memastikan bahwa saya tidak mendapatkan jalur yang terlalu panjang.