Il y a plus d'options que les deux que vous mentionnez. Il y a :
- Liste de contiguïté (la "parent_id" que presque tout le monde utilise)
- Ensembles imbriqués
- Énumération des chemins
- Table de fermeture (ou relation d'adjacence)
Voir ma réponse à "Quelle est la manière la plus efficace/élégante d'analyser une table plate dans un arbre ? "
Ou quelques livres :
- "Arbres et hiérarchies en SQL pour Smarties " par Joe Celko.
- "Modèles de conception SQL " par Vadim Tropashko.