Question

Je crée un tableau d'affichage avec des messages et j'essaie de garder les choses simples. Il existe une table de messages, puis une table de réponses comportant un champ 'reply_id' qui peut être nul pour indiquer une réponse de niveau supérieur ou une valeur indiquant une réponse threadée.

Je ne sais pas trop comment faire un appel SELECT sur ce type de table?

Reply
-id (every reply gets a unique id)
-message_id (the message it is replying to)
-reply_id (the id of the reply it may be replying to - for threading)
-reply

Je sais que cela peut être un problème complexe, en particulier pour les performances, mais je ne cherche que la solution la plus élémentaire.

merci ...

Était-ce utile?

La solution

Vous utilisez le "manuel" naïf " moyen de stocker des arbres, c’est-à-dire stocker une référence au parent immédiat. Cette conception s'appelle Liste des adjacences . Il existe d'autres solutions:

  • Énumération du chemin , où vous stockez dans chaque nœud de l'arborescence une chaîne codant tous ses ancêtres directs.
  • Ensembles imbriqués , une approche intelligente de Joe Celko qui consiste à utiliser deux valeurs numériques par noeud pour lier tous ses descendants.
  • Table de fermeture (ou relation d'adjacence), où vous utilisez une table distincte pour répertorier chaque paire ancêtre-descendant.

Voir ma réponse à " Quel est le moyen le plus efficace / élégant d’analyser une table plate dans un arbre? " pour des références et des exemples de conception de la table de fermeture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top