Frage

Ich erstelle ein Gewinde Message Board und ich versuche, es einfach zu halten. Es gibt eine Nachrichtentabelle, und dann eine Antwort Tabelle, die eine ‚reply_id‘ Feld hat, die null sein kann, eine Top-Level-Antwort anzuzeigen, oder einen Wert, der eine Gewinde Antwort anzeigt.

Ich bin ein wenig verwirrt darüber, wie wenn ein SELECT-Aufruf auf dieser Art der Tabelle zu tun?

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

Ich weiß, dass dies ein komplexes Problem sein kann, vor allem für die Leistung, aber ich bin wirklich nur auf der Suche nach der einfachsten Lösung dieses Problems.

Dank ...

War es hilfreich?

Lösung

Sie sind die naive „Lehrbuch“ Art und Weise der Speicherung von Bäumen verwendet, das heißt speichert einen Verweis auf den unmittelbar übergeordneten. Dieser Entwurf wird als Adjazenzliste . Es gibt andere Lösungen:

  • Pfad Enumeration , in dem Sie in jedem Knoten des Baumes zu speichern eine Zeichenfolge enthalten, die alle ihre direkten Vorfahren.
  • Nested Sets , ein kluger Ansatz von Joe Celko wo Sie zwei pro Knoten Zahlenwerte gebunden alle seine Nachkommen.
  • Closure Tabelle (oder Adjazenzrelation), wo Sie eine separate Tabelle verwenden, um jeden Vorfahren-Nachkomme Paar aufzulisten.

Sehen Sie meine Antwort auf "

scroll top