sql >> Database >  >> RDS >> Mysql

Hiërarchische tagging in SQL

Ik heb het geïmplementeerd met behulp van twee kolommen. Ik vereenvoudig het hier een beetje, omdat ik de tagnaam in een apart veld/tabel moest houden omdat ik het voor verschillende talen moest lokaliseren:

  • tag
  • pad

Kijk bijvoorbeeld naar deze rijen:

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/

enz.

De like . gebruiken operator op het padveld kunt u gemakkelijk alle benodigde tagrijen krijgen:

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

Er zijn enkele implementatiedetails, zoals wanneer u een knooppunt in de hiërarchie verplaatst, u ook alle onderliggende elementen moet wijzigen, enz., maar het is niet moeilijk.

Zorg er ook voor dat de lengte van je pad lang genoeg is - in mijn geval heb ik niet de tagnaam voor het pad gebruikt, maar een ander veld om ervoor te zorgen dat ik niet te lange paden krijg.



  1. MySQL toont telling van 0 voor datums zonder records

  2. Hoe de datum uit een string in Oracle te halen

  3. alternatieven voor VERVANGEN op een tekst- of ntext-gegevenstype

  4. Een mysql-database met meerdere tenants ontwerpen