Umsetzung User-spezifischer Abfragen (Datenstruktur)

Alex_T

Erfahrenes Mitglied
Grüße an Alle,

ich sitz da wieder mal an einem Problem, was momentan noch die Logik betrifft.
Ich hab mir das schon mehrfach überlegt und dennoch ist nichts Produktives bei rumgekommen :-(.

Also, worum gehts:
Man sieht das hier im Forum eig. ganz gut - jeder User bekommt extra für sich angezeigt, welchen Thread er nun schon gelesen hat und welchen noch nicht (bzw. auf ein ganzes Unterforum ausgeweitet).

Nun kommt der Flaschenhals in meinem Kopf ins Spiel -> wie könnte man sowas denn effizient auf eine Datenbank-Struktur übertragen. Ich kann ja schlecht für angenommen 1000 User eine Tabelle (nur eine für alle) basteln und dort hineinschreiben, welchen der xx.xxx Threads die nun schon gelesen haben.

Der umgedrehte Weg erscheint mir auch nicht der optimale:
In jedem Thread vermerken, wer die Seite alles besucht hat.


Wäre über Meinungen oder möglicherweise Erfahrungen (vllt. betreibt ja jemand ein eigenes Forum und weiß, wie das gehandhabt wird) sehr dankbar.
 

chmee

verstaubtes inventar
Premium-User
Die erste Idee ist doch nicht so falsch. Du lässt jeden Zugriff von jedem User/Gast mitprotokollieren. User (id xx) hat an Stelle yy zz (lesen,schreiben) getan. Das sind also nur 3 Werte in jener Tabelle - von mir aus auch noch nen timestamp-Eintrag und ne unique-id. Der Clou ist, Du hast ne Halbwertszeit. Alle Einträge in dieser Tabelle älter als zB 20 Minuten werden gelöscht. So hast Du eine recht kontrollierbare Tabellengröße. Die Abfrage ist ja dann nur noch "neuesten Eintrag von User xx auslesen".

mfg chmee
 

Tim Bureck

Erfahrenes Mitglied
Da ich auch bald die Ehre habe ein Forum schreiben zu dürfen, habe ich mir gerade darum auch bereits Gedanken gemacht, da das alte Forum in diesem Punkt eine Schwäche zeigte, die den Usern richtig auf'n Geist ging.

Wie chmee schon andeutete würde ich eine Tabelle machen, die eine Beziehung zwischen User und Topic herstellen würde. Dabei wird die User ID gespeichert, die Topic ID sowie der Zeitpunkt, zu dem das Topic gelesen wurde. Außerdem soll der User alle Foren "als gelesen" markieren können. Wann er das zuletzt getan hat wird in seinen Optionen gespeichert.

Zusammen aus diesen Einträgen kann man schon sehr genau ermitteln, welche Topics als ungelesen dargestellt werden können und welche nicht.
 

Alex_T

Erfahrenes Mitglied
Alles klar,

eine zusätzliche Tabelle war ja nicht vermeidbar und das hatte ich mir vorher auch schon gedacht (wer weiß, was sich beim Schreiben noch ändert ;)).
Da werd ich mich morgen gleich mal frisch ans Werk machen...falls mir noch ein paar andere Ansätze einfallen, dann lass ich es Euch wissen.

Danke Euch bis dahin erstmal - schönen Abend noch.
Gruß Alex