2つの列を使用して実装しました。タグ名を別の言語にローカライズする必要があるため、別のフィールド/テーブルに保持する必要があるため、ここでは少し簡略化します。
- タグ
- パス
たとえば、次の行を見てください。
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/
など
like
を使用する パスフィールドの演算子を使用すると、必要なすべてのタグ行を簡単に取得できます:
SELECT * FROM tags WHERE path LIKE 'database/%'
階層内のノードを移動するときに、すべての子も変更する必要があるなど、実装の詳細がいくつかありますが、難しくはありません。
また、パスの長さが十分に長いことを確認してください。私の場合、パスのタグ名ではなく、別のフィールドを使用して、パスが長くなりすぎないようにしました。