Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hierarchisches Tagging in SQL

Ich habe es mit zwei Spalten implementiert. Ich vereinfache es hier ein wenig, weil ich den Tag-Namen in einem separaten Feld/Tabelle behalten musste, weil ich ihn für verschiedene Sprachen lokalisieren musste:

  • Tag
  • Pfad

Sehen Sie sich zum Beispiel diese Zeilen an:

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/

usw.

Mit like Operator auf das Pfadfeld können Sie ganz einfach alle benötigten Tag-Zeilen erhalten:

SELECT * FROM tags WHERE path LIKE 'database/%'

Es gibt einige Implementierungsdetails, wie wenn Sie einen Knoten in der Hierarchie verschieben, müssen Sie auch alle untergeordneten Elemente ändern usw., aber es ist nicht schwer.

Stellen Sie außerdem sicher, dass die Länge Ihres Pfads lang genug ist - in meinem Fall habe ich nicht den Tag-Namen für den Pfad verwendet, sondern ein anderes Feld, um sicherzustellen, dass ich nicht zu lange Pfade erhalte.