Chemin matérialisé
Une façon de stocker des structures arborescentes dans une base relationnelle où chaque nœud enregistre le chemin complet depuis la racine sous forme de chaîne, par ex. "/1/4/9/". Cela transforme les requêtes de sous-arbre et d'ascendance en simples correspondances de chaînes.
Mécanique : chaque ligne a une colonne path qui encode le chemin depuis la racine (avec un caractère séparateur). Le gain : « récupérer tout le sous-arbre sous le nœud 4 » devient WHERE path LIKE '/1/4/%' (rapide avec un index classique) ; « récupérer tous les ancêtres » se fait en découpant la chaîne. Bien plus simple que des requêtes récursives pour la lecture. Le prix : déplacer un sous-arbre exige de mettre à jour tous les chemins concernés, et la chaîne de chemin a une limite de longueur. PostgreSQL propose un type dédié, ltree, avec ses opérateurs et un index GiST prévus pour ce cas précis. L'un des plusieurs modèles pour représenter des hiérarchies en SQL, aux côtés de la liste d'adjacence, du nested set et de la closure table. Le meilleur choix quand la lecture des sous-arbres est fréquente et les déplacements rares. À rapprocher de la liste d'adjacence et du nested set.