sql >> Databáze >  >> RDS >> Mysql

Hierarchické značkování v SQL

Implementoval jsem to pomocí dvou sloupců. Zde to trochu zjednoduším, protože jsem musel ponechat název značky v samostatném poli/tabulce, protože jsem jej musel lokalizovat do různých jazyků:

  • tag
  • cesta

Podívejte se například na tyto řádky:

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/

atd.

Pomocí like operátor v poli cesty můžete snadno získat všechny potřebné řádky značek:

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

Existují určité detaily implementace, jako když přesunete uzel v hierarchii, musíte také změnit všechny potomky atd., ale není to těžké.

Ujistěte se také, že délka vaší cesty je dostatečně dlouhá – v mém případě jsem pro cestu nepoužil název značky, ale jiné pole, abych se ujistil, že nedostanu příliš dlouhé cesty.



  1. Jak srovnávat výkon MySQL a MariaDB pomocí SysBench

  2. Formát data MySQL DD/MM/RRRR vybrat dotaz?

  3. SQL Server v.Next:Výkon STRING_AGG().

  4. Jak vytvořit jedinečný index ve sloupci NULL?