Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hierarchiczne tagowanie w SQL

Zaimplementowałem to za pomocą dwóch kolumn. Upraszczam to trochę tutaj, ponieważ musiałem trzymać nazwę tagu w osobnym polu/tabeli, ponieważ musiałem ją zlokalizować dla różnych języków:

  • znacznik
  • ścieżka

Spójrz na te wiersze na przykład:

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/

itp.

Korzystanie z like operatora w polu ścieżki, możesz łatwo uzyskać wszystkie potrzebne wiersze tagów:

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

Istnieje kilka szczegółów implementacji, na przykład, gdy przenosisz węzeł w hierarchii, musisz również zmienić wszystkie dzieci itp., ale nie jest to trudne.

Upewnij się również, że długość Twojej ścieżki jest wystarczająco długa - w moim przypadku nie użyłem nazwy tagu ścieżki, ale innego pola, aby upewnić się, że nie dostanę zbyt długich ścieżek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kolumna json a wiele kolumn

  2. Jak zmienić wartości domyślne kolumny tabeli mysql?

  3. Java - Jak uzyskać nazwę kolumny w zestawie wyników

  4. MySQL dla każdej alternatywy dla procedury

  5. Utwórz tabelę w PHP i wypełnij z MySQL