Bewertungssystem...

Opesomi

Grünschnabel
Hallo! Ich plane eine seite auf der man bilder bewerten, und kommentieren kann.

d.h. ein user kann ein album erstellen in das er verschiedene bilder ausstellt, und diese sollen dann kommentiert und bewertet werden können. Nur leider habe ich da probleme ein wirklich effizientes bewertunssystem zu finden.

Folgendes soll möglich sein:
-Bewerten von bildern
-gesamtbewertung eines albums oder bildes ansehen (durchschnittliche bewertung)
-die durchschnittliche bewertung die ein user abgegeben hat ansehen
-als user alle bewertungen löschen

und der letzte punkt ist was es es mir praktisch unmöglich macht das ganze effizient zu gestalten

entweder
-mache ich eine tabelle mit bewertendem user, bewertung, bildid und albumid was bei jedem aufruf einer bewertungsskala SEHR ineffizient ist, allerdings die löschung aller bewertungen relativ einfach macht
oder:
-ich mache eine spalte für den insgesamten betrag aller bewertungen, und wie viele bewertungen es wahren für album, bild, und user (für abgegebene bewertungen)
das wiederrum macht es unmöglich bewertungen zu löschen, und erlaubt es usern das gleiche bild mehrfach zu bewerten
dann gibt es da noch folgendes:
-ich mache eine mischung. eine tabelle mit abgegebenen bewertungen, und diese spalten für bild, album, user. diese werden bei jeder abgegebenen bewertung neu berechnet. (womit die gelöschten bewertungen ebenfalls eliminiert werden) das ist allerdings auch nicht sehr effizient, wenn viel bewertet wird. ausserdem will ich die bewertungen gleich gelöscht nachdem der user das gemacht hat.

gibt es da etwa noch etwas worauf ich einfach nicht komme, oder muss ich mich mit der dritten variante begnügen?
 
-ich mache eine mischung. eine tabelle mit abgegebenen bewertungen, und diese spalten für bild, album, user. diese werden bei jeder abgegebenen bewertung neu berechnet. (womit die gelöschten bewertungen ebenfalls eliminiert werden) das ist allerdings auch nicht sehr effizient, wenn viel bewertet wird. ausserdem will ich die bewertungen gleich gelöscht nachdem der user das gemacht hat.

gibt es da etwa noch etwas worauf ich einfach nicht komme, oder muss ich mich mit der dritten variante begnügen?

Die dritte Variante ist garnicht schlecht.
Du musst nur beim löschen einer Bewertung diese direkt von der "Gesamtbewertun" abziehen, damit entsteht nicht soviel Arbeit.

Sprich eine Tabelle wo steht welcher User was mit wievielen Punkten bewertet hat.
Eine zweite Tabelle in der Erfasst wird wieviele User etwas mit wievielen Punkten insgesamt bewertet haben. Dann einfach Punkte geteilt durch User = Durchschnittliche Punkte für das Bild.
Löchst du nun eine Bewertung aus der ersten Tabelle, ziehst du in der Zweiten beim entsprechenden Eintrag einen User und dessen Bewertungswert ab.

So in etwa baue ich auch gerade mein Moviedatenbank auf.
Ich hoffe du verstehst wie ich das meine :D
 
Ja schon, aber das problem ist halt, dass wenn der user nun 1000 bewertungen abgegeben hat das 1001 queries sind...
für einen befehl.

Deswegen wenn, dann ohne updaten beim löschen von Bewertungen...
 
Wenn man halt auch alle 1000 auf einmal löscht. Also alle Bewertungen des Users, was ja wohl eher selten vorkommt.
Für diesen Ausnahmefall könnte man das ganze ja auch in Happen machen, also zB ähnlich bei dem Versenden von Newslettern über PHP; immer 25 oder 50 Stück auf einmal, pause, dann weiter.
 
Ja, aber ich wollte usern es halt ermöglichen diese zu löschen, wodurcxh es schon häufiger vorkommen könnte
 
Zurück